Template Numerical Library version\ main:1844991
Loading...
Searching...
No Matches
TNL::Solvers::IterativeSolverMonitor< Real > Class Template Reference

Object for monitoring convergence of iterative solvers. More...

#include <TNL/Solvers/IterativeSolverMonitor.h>

Inheritance diagram for TNL::Solvers::IterativeSolverMonitor< Real >:
[legend]
Collaboration diagram for TNL::Solvers::IterativeSolverMonitor< Real >:
[legend]

Public Types

using IndexType = std::size_t
 A type for indexing.
using RealType = Real
 A type of the floating-point arithmetics.

Public Member Functions

 IterativeSolverMonitor ()=default
 Construct with no parameters.
void refresh () override
 Causes that the monitor prints out the status of the solver.
void setIterations (const IndexType &iterations)
 Set number of the current iteration.
void setNodesPerIteration (const IndexType &nodes)
 Set the number of nodes of the numerical mesh or lattice.
void setResidue (const RealType &residue)
 Set residue of the current approximation of the solution.
void setStage (const std::string &stage)
 This method can be used for naming a stage of the monitored solver.
void setTime (const RealType &time)
 Set the time of the simulated evolution if it is time dependent.
void setTimeStep (const RealType &timeStep)
 Set the time step for time dependent iterative solvers.
void setVerbose (const IndexType &verbose)
 Set up the verbosity of the monitor.
Public Member Functions inherited from TNL::Solvers::SolverMonitor
 SolverMonitor ()=default
 Basic construct with no arguments.
bool isStopped () const
 Checks whether the main loop was stopped.
void runMainLoop ()
 Starts the main loop from which the method SolverMonitor::refresh is called in given time periods.
void setRefreshRate (const int &refreshRate)
 Set the time interval between two consecutive calls of SolverMonitor::refresh.
void setTimer (Timer &timer)
 Set a timer object for the solver monitor.
void stopMainLoop ()
 Stops the main loop of the monitor. See runMainLoop.
void unsetTimer ()
 Unsets the timer object for the solver monitor.

Protected Member Functions

int getLineWidth ()
Protected Member Functions inherited from TNL::Solvers::SolverMonitor
double getElapsedTime ()

Protected Attributes

std::atomic_bool attributes_changed { false }
RealType elapsed_time_before_refresh = 0
IndexType iterations = 0
IndexType iterations_before_refresh = 0
RealType last_mlups = 0
IndexType nodesPerIteration = 0
RealType residue = 0
std::atomic_bool saved { false }
IndexType saved_iterations = 0
RealType saved_residue = 0
std::string saved_stage
RealType saved_time = 0
RealType saved_timeStep = 0
std::string stage
RealType time = 0
RealType timeStep = 0
IndexType verbose = 2
Protected Attributes inherited from TNL::Solvers::SolverMonitor
std::atomic_bool started { false }
std::atomic_bool stopped { false }
std::atomic_int timeout_milliseconds { 500 }
Timertimer = nullptr

Detailed Description

template<typename Real = double>
class TNL::Solvers::IterativeSolverMonitor< Real >

Object for monitoring convergence of iterative solvers.

Template Parameters
Realis a type of the floating-point arithmetics.
Indexis an indexing type.

The following example shows how to use the iterative solver monitor for monitoring convergence of linear iterative solver:

1#include <iostream>
2#include <memory>
3#include <TNL/Matrices/SparseMatrix.h>
4#include <TNL/Devices/Sequential.h>
5#include <TNL/Devices/Cuda.h>
6#include <TNL/Solvers/Linear/Jacobi.h>
7
8template< typename Device >
9void
10iterativeLinearSolverExample()
11{
12 /***
13 * Set the following matrix (dots represent zero matrix elements):
14 *
15 * / 2.5 -1 . . . \
16 * | -1 2.5 -1 . . |
17 * | . -1 2.5 -1. . |
18 * | . . -1 2.5 -1 |
19 * \ . . . -1 2.5 /
20 */
23 const int size( 5 );
24 auto matrix_ptr = std::make_shared< MatrixType >();
25 matrix_ptr->setDimensions( size, size );
26 matrix_ptr->setRowCapacities( Vector( { 2, 3, 3, 3, 2 } ) );
27
28 auto f = [ = ] __cuda_callable__( typename MatrixType::RowView & row ) mutable
29 {
30 const int rowIdx = row.getRowIndex();
31 if( rowIdx == 0 ) {
32 row.setElement( 0, rowIdx, 2.5 ); // diagonal element
33 row.setElement( 1, rowIdx + 1, -1 ); // element above the diagonal
34 }
35 else if( rowIdx == size - 1 ) {
36 row.setElement( 0, rowIdx - 1, -1.0 ); // element below the diagonal
37 row.setElement( 1, rowIdx, 2.5 ); // diagonal element
38 }
39 else {
40 row.setElement( 0, rowIdx - 1, -1.0 ); // element below the diagonal
41 row.setElement( 1, rowIdx, 2.5 ); // diagonal element
42 row.setElement( 2, rowIdx + 1, -1.0 ); // element above the diagonal
43 }
44 };
45
46 /***
47 * Set the matrix elements.
48 */
49 matrix_ptr->forAllRows( f );
50 std::cout << *matrix_ptr << '\n';
51
52 /***
53 * Set the right-hand side vector.
54 */
55 Vector x( size, 1.0 );
56 Vector b( size );
57 matrix_ptr->vectorProduct( x, b );
58 x = 0.0;
59 std::cout << "Vector b = " << b << '\n';
60
61 /***
62 * Setup solver of the linear system.
63 */
65 LinearSolver solver;
66 solver.setMatrix( matrix_ptr );
67 solver.setOmega( 0.0005 );
68
69 /***
70 * Setup monitor of the iterative solver.
71 */
72 using IterativeSolverMonitorType = TNL::Solvers::IterativeSolverMonitor< double >;
73 IterativeSolverMonitorType monitor;
74 TNL::Solvers::SolverMonitorThread monitorThread( monitor );
75 monitor.setRefreshRate( 10 ); // refresh rate in milliseconds
76 monitor.setVerbose( 1 );
77 monitor.setStage( "Jacobi stage:" );
78 solver.setSolverMonitor( monitor );
79 solver.setConvergenceResidue( 1.0e-6 );
80 solver.solve( b, x );
81 monitor.stopMainLoop();
82 std::cout << "Vector x = " << x << '\n';
83}
84
85int
86main( int argc, char* argv[] )
87{
88 std::cout << "Solving linear system on host:\n";
89 iterativeLinearSolverExample< TNL::Devices::Sequential >();
90
91#ifdef __CUDACC__
92 std::cout << "Solving linear system on CUDA device:\n";
93 iterativeLinearSolverExample< TNL::Devices::Cuda >();
94#endif
95}
#define __cuda_callable__
This macro serves for annotating functions which are supposed to be called even from the GPU device.
Definition Macros.h:50
Vector extends Array with algebraic operations.
Definition Vector.h:37
Implementation of sparse matrix, i.e. matrix storing only non-zero elements.
Definition SparseMatrix.h:57
Iterative solver of linear systems based on the Jacobi method.
Definition Jacobi.h:21
virtual void setMatrix(const MatrixPointer &matrix)
Set the matrix of the linear system.
Definition LinearSolver.h:120
A RAII wrapper for launching the SolverMonitor's main loop in a separate thread.
Definition SolverMonitor.h:142
T make_shared(T... args)

The result looks as follows:

Solving linear system on host:
Row: 0 -> 0:2.5 1:-1
Row: 1 -> 0:-1 1:2.5 2:-1
Row: 2 -> 1:-1 2:2.5 3:-1
Row: 3 -> 2:-1 3:2.5 4:-1
Row: 4 -> 3:-1 4:2.5
Vector b = [ 1.5, 0.5, 0.5, 0.5, 1.5 ]
Jacobi stage: ITER: 22503 RES: 0.022788
Jacobi stage: ITER: 45009 RES: 0.00071818
Jacobi stage: ITER: 67697 RES: 2.2017e-05
Vector x = [ 0.999999, 0.999999, 0.999998, 0.999999, 0.999999 ]
Solving linear system on CUDA device:
Row: 0 -> 0:2.5 1:-1
Row: 1 -> 0:-1 1:2.5 2:-1
Row: 2 -> 1:-1 2:2.5 3:-1
Row: 3 -> 2:-1 3:2.5 4:-1
Row: 4 -> 3:-1 4:2.5
Vector b = [ 1.5, 0.5, 0.5, 0.5, 1.5 ]
Jacobi stage: ITER: 2123 RES: 0.56725
Jacobi stage: ITER: 2555 RES: 0.51972
Jacobi stage: ITER: 2929 RES: 0.48367
Jacobi stage: ITER: 3305 RES: 0.45152
Jacobi stage: ITER: 3683 RES: 0.42255
Jacobi stage: ITER: 3963 RES: 0.4027
Jacobi stage: ITER: 4213 RES: 0.38592
Jacobi stage: ITER: 4465 RES: 0.37007
Jacobi stage: ITER: 4715 RES: 0.35528
Jacobi stage: ITER: 4967 RES: 0.34101
Jacobi stage: ITER: 5219 RES: 0.32743
Jacobi stage: ITER: 5477 RES: 0.31408
Jacobi stage: ITER: 5735 RES: 0.30156
Jacobi stage: ITER: 5983 RES: 0.28996
Jacobi stage: ITER: 6193 RES: 0.28044
Jacobi stage: ITER: 6435 RES: 0.27007
Jacobi stage: ITER: 6685 RES: 0.25964
Jacobi stage: ITER: 6951 RES: 0.24917
Jacobi stage: ITER: 7223 RES: 0.23884
Jacobi stage: ITER: 7507 RES: 0.22854
Jacobi stage: ITER: 7723 RES: 0.22102
Jacobi stage: ITER: 7977 RES: 0.21244
Jacobi stage: ITER: 8231 RES: 0.20432
Jacobi stage: ITER: 8467 RES: 0.19701
Jacobi stage: ITER: 8625 RES: 0.19221
Jacobi stage: ITER: 8879 RES: 0.18488
Jacobi stage: ITER: 9095 RES: 0.17883
Jacobi stage: ITER: 9263 RES: 0.17426
Jacobi stage: ITER: 9475 RES: 0.16866
Jacobi stage: ITER: 9669 RES: 0.16365
Jacobi stage: ITER: 9869 RES: 0.15869
Jacobi stage: ITER: 10079 RES: 0.15369
Jacobi stage: ITER: 10763 RES: 0.13834
Jacobi stage: ITER: 11523 RES: 0.12309
Jacobi stage: ITER: 11713 RES: 0.11951
Jacobi stage: ITER: 11819 RES: 0.11761
Jacobi stage: ITER: 11939 RES: 0.11547
Jacobi stage: ITER: 12083 RES: 0.11294
Jacobi stage: ITER: 12307 RES: 0.10912
Jacobi stage: ITER: 12457 RES: 0.1066
Jacobi stage: ITER: 12547 RES: 0.10517
Jacobi stage: ITER: 12637 RES: 0.10369
Jacobi stage: ITER: 12855 RES: 0.10031
Jacobi stage: ITER: 13055 RES: 0.097271
Jacobi stage: ITER: 13275 RES: 0.094038
Jacobi stage: ITER: 13451 RES: 0.091529
Jacobi stage: ITER: 13599 RES: 0.089472
Jacobi stage: ITER: 13843 RES: 0.08618
Jacobi stage: ITER: 14093 RES: 0.082908
Jacobi stage: ITER: 14345 RES: 0.07976
Jacobi stage: ITER: 14597 RES: 0.076731
Jacobi stage: ITER: 14851 RES: 0.073818
Jacobi stage: ITER: 15075 RES: 0.071321
Jacobi stage: ITER: 15297 RES: 0.068909
Jacobi stage: ITER: 15541 RES: 0.066374
Jacobi stage: ITER: 15755 RES: 0.064247
Jacobi stage: ITER: 15963 RES: 0.062227
Jacobi stage: ITER: 16199 RES: 0.060011
Jacobi stage: ITER: 16451 RES: 0.057733
Jacobi stage: ITER: 16687 RES: 0.055677
Jacobi stage: ITER: 16935 RES: 0.053596
Jacobi stage: ITER: 17147 RES: 0.051879
Jacobi stage: ITER: 17383 RES: 0.050032
Jacobi stage: ITER: 17597 RES: 0.048399
Jacobi stage: ITER: 17809 RES: 0.046849
Jacobi stage: ITER: 18059 RES: 0.045098
Jacobi stage: ITER: 18311 RES: 0.043385
Jacobi stage: ITER: 18567 RES: 0.041713
Jacobi stage: ITER: 18797 RES: 0.040252
Jacobi stage: ITER: 19015 RES: 0.038939
Jacobi stage: ITER: 19255 RES: 0.037529
Jacobi stage: ITER: 19483 RES: 0.036238
Jacobi stage: ITER: 19699 RES: 0.035055
Jacobi stage: ITER: 19945 RES: 0.033745
Jacobi stage: ITER: 20195 RES: 0.032484
Jacobi stage: ITER: 20447 RES: 0.03125
Jacobi stage: ITER: 20659 RES: 0.030249
Jacobi stage: ITER: 20895 RES: 0.029172
Jacobi stage: ITER: 21145 RES: 0.028065
Jacobi stage: ITER: 21359 RES: 0.027165
Jacobi stage: ITER: 21579 RES: 0.026263
Jacobi stage: ITER: 21821 RES: 0.025297
Jacobi stage: ITER: 22067 RES: 0.024366
Jacobi stage: ITER: 22321 RES: 0.023427
Jacobi stage: ITER: 22559 RES: 0.022593
Jacobi stage: ITER: 22761 RES: 0.021896
Jacobi stage: ITER: 23007 RES: 0.02109
Jacobi stage: ITER: 23211 RES: 0.02044
Jacobi stage: ITER: 23459 RES: 0.019676
Jacobi stage: ITER: 23673 RES: 0.019034
Jacobi stage: ITER: 23917 RES: 0.018333
Jacobi stage: ITER: 24167 RES: 0.017648
Jacobi stage: ITER: 24421 RES: 0.016968
Jacobi stage: ITER: 24673 RES: 0.016323
Jacobi stage: ITER: 24927 RES: 0.015704
Jacobi stage: ITER: 25183 RES: 0.015098
Jacobi stage: ITER: 25407 RES: 0.014588
Jacobi stage: ITER: 25579 RES: 0.014207
Jacobi stage: ITER: 25729 RES: 0.013879
Jacobi stage: ITER: 25961 RES: 0.013393
Jacobi stage: ITER: 26211 RES: 0.012893
Jacobi stage: ITER: 26443 RES: 0.012441
Jacobi stage: ITER: 26695 RES: 0.011969
Jacobi stage: ITER: 26963 RES: 0.011486
Jacobi stage: ITER: 27195 RES: 0.011084
Jacobi stage: ITER: 27435 RES: 0.010683
Jacobi stage: ITER: 27651 RES: 0.010334
Jacobi stage: ITER: 27847 RES: 0.010028
Jacobi stage: ITER: 28063 RES: 0.0097007
Jacobi stage: ITER: 28299 RES: 0.0093554
Jacobi stage: ITER: 28535 RES: 0.0090223
Jacobi stage: ITER: 28783 RES: 0.0086851
Jacobi stage: ITER: 29021 RES: 0.0083707
Jacobi stage: ITER: 29257 RES: 0.0080727
Jacobi stage: ITER: 29511 RES: 0.0077662
Jacobi stage: ITER: 29743 RES: 0.0074943
Jacobi stage: ITER: 29961 RES: 0.0072453
Jacobi stage: ITER: 30195 RES: 0.0069917
Jacobi stage: ITER: 30905 RES: 0.0062674
Jacobi stage: ITER: 31095 RES: 0.006089
Jacobi stage: ITER: 31359 RES: 0.005847
Jacobi stage: ITER: 31599 RES: 0.0056354
Jacobi stage: ITER: 31853 RES: 0.0054181
Jacobi stage: ITER: 32085 RES: 0.0052284
Jacobi stage: ITER: 32307 RES: 0.0050547
Jacobi stage: ITER: 32513 RES: 0.0048957
Jacobi stage: ITER: 32759 RES: 0.0047156
Jacobi stage: ITER: 33009 RES: 0.0045366
Jacobi stage: ITER: 33263 RES: 0.0043644
Jacobi stage: ITER: 33513 RES: 0.0041987
Jacobi stage: ITER: 33769 RES: 0.0040368
Jacobi stage: ITER: 33989 RES: 0.0039026
Jacobi stage: ITER: 34207 RES: 0.0037753
Jacobi stage: ITER: 34407 RES: 0.0036611
Jacobi stage: ITER: 34663 RES: 0.0035199
Jacobi stage: ITER: 34907 RES: 0.0033904
Jacobi stage: ITER: 35163 RES: 0.0032597
Jacobi stage: ITER: 35407 RES: 0.0031398
Jacobi stage: ITER: 35661 RES: 0.0030187
Jacobi stage: ITER: 35865 RES: 0.0029256
Jacobi stage: ITER: 36075 RES: 0.0028336
Jacobi stage: ITER: 36317 RES: 0.0027294
Jacobi stage: ITER: 36563 RES: 0.002629
Jacobi stage: ITER: 36817 RES: 0.0025276
Jacobi stage: ITER: 37069 RES: 0.0024316
Jacobi stage: ITER: 37323 RES: 0.0023393
Jacobi stage: ITER: 37545 RES: 0.0022602
Jacobi stage: ITER: 37769 RES: 0.0021837
Jacobi stage: ITER: 38003 RES: 0.0021073
Jacobi stage: ITER: 38247 RES: 0.0020298
Jacobi stage: ITER: 38499 RES: 0.0019527
Jacobi stage: ITER: 38751 RES: 0.0018786
Jacobi stage: ITER: 39005 RES: 0.0018061
Jacobi stage: ITER: 39211 RES: 0.0017504
Jacobi stage: ITER: 39479 RES: 0.0016798
Jacobi stage: ITER: 39725 RES: 0.001617
Jacobi stage: ITER: 39975 RES: 0.0015566
Jacobi stage: ITER: 40227 RES: 0.0014975
Jacobi stage: ITER: 40479 RES: 0.0014406
Jacobi stage: ITER: 40729 RES: 0.0013859
Jacobi stage: ITER: 40981 RES: 0.0013333
Jacobi stage: ITER: 41231 RES: 0.0012835
Jacobi stage: ITER: 41483 RES: 0.0012347
Jacobi stage: ITER: 41735 RES: 0.0011879
Jacobi stage: ITER: 41987 RES: 0.0011428
Jacobi stage: ITER: 42239 RES: 0.0010994
Jacobi stage: ITER: 42489 RES: 0.0010576
Jacobi stage: ITER: 42741 RES: 0.0010175
Jacobi stage: ITER: 42991 RES: 0.00097945
Jacobi stage: ITER: 43243 RES: 0.00094226
Jacobi stage: ITER: 43495 RES: 0.00090648
Jacobi stage: ITER: 43745 RES: 0.00087207
Jacobi stage: ITER: 43995 RES: 0.00083947
Jacobi stage: ITER: 44247 RES: 0.0008076
Jacobi stage: ITER: 44499 RES: 0.00077694
Jacobi stage: ITER: 44749 RES: 0.00074744
Jacobi stage: ITER: 44999 RES: 0.0007195
Jacobi stage: ITER: 45251 RES: 0.00069218
Jacobi stage: ITER: 45503 RES: 0.0006659
Jacobi stage: ITER: 45753 RES: 0.00064062
Jacobi stage: ITER: 46003 RES: 0.00061667
Jacobi stage: ITER: 46255 RES: 0.00059326
Jacobi stage: ITER: 46507 RES: 0.00057074
Jacobi stage: ITER: 46757 RES: 0.00054907
Jacobi stage: ITER: 47009 RES: 0.00052822
Jacobi stage: ITER: 47259 RES: 0.00050848
Jacobi stage: ITER: 47511 RES: 0.00048917
Jacobi stage: ITER: 47761 RES: 0.0004706
Jacobi stage: ITER: 48013 RES: 0.00045273
Jacobi stage: ITER: 48263 RES: 0.00043581
Jacobi stage: ITER: 48515 RES: 0.00041926
Jacobi stage: ITER: 48767 RES: 0.00040334
Jacobi stage: ITER: 49017 RES: 0.00038803
Jacobi stage: ITER: 49267 RES: 0.00037353
Jacobi stage: ITER: 49519 RES: 0.00035934
Jacobi stage: ITER: 49771 RES: 0.0003457
Jacobi stage: ITER: 50021 RES: 0.00033257
Jacobi stage: ITER: 50271 RES: 0.00032014
Jacobi stage: ITER: 50523 RES: 0.00030799
Jacobi stage: ITER: 50775 RES: 0.00029629
Jacobi stage: ITER: 51025 RES: 0.00028504
Jacobi stage: ITER: 51275 RES: 0.00027439
Jacobi stage: ITER: 51527 RES: 0.00026397
Jacobi stage: ITER: 51779 RES: 0.00025395
Jacobi stage: ITER: 52029 RES: 0.00024431
Jacobi stage: ITER: 52281 RES: 0.00023503
Jacobi stage: ITER: 52531 RES: 0.00022625
Jacobi stage: ITER: 52783 RES: 0.00021766
Jacobi stage: ITER: 53033 RES: 0.00020939
Jacobi stage: ITER: 53285 RES: 0.00020144
Jacobi stage: ITER: 53535 RES: 0.00019391
Jacobi stage: ITER: 53787 RES: 0.00018655
Jacobi stage: ITER: 54039 RES: 0.00017947
Jacobi stage: ITER: 54289 RES: 0.00017265
Jacobi stage: ITER: 54539 RES: 0.0001662
Jacobi stage: ITER: 54791 RES: 0.00015989
Jacobi stage: ITER: 55043 RES: 0.00015382
Jacobi stage: ITER: 55293 RES: 0.00014798
Jacobi stage: ITER: 55543 RES: 0.00014245
Jacobi stage: ITER: 55795 RES: 0.00013704
Jacobi stage: ITER: 56047 RES: 0.00013184
Jacobi stage: ITER: 56297 RES: 0.00012683
Jacobi stage: ITER: 56547 RES: 0.00012209
Jacobi stage: ITER: 56799 RES: 0.00011746
Jacobi stage: ITER: 57051 RES: 0.000113
Jacobi stage: ITER: 57301 RES: 0.00010871
Jacobi stage: ITER: 57553 RES: 0.00010458
Jacobi stage: ITER: 57803 RES: 0.00010067
Jacobi stage: ITER: 58055 RES: 9.6847e-05
Jacobi stage: ITER: 58307 RES: 9.317e-05
Jacobi stage: ITER: 58557 RES: 8.9633e-05
Jacobi stage: ITER: 58807 RES: 8.6282e-05
Jacobi stage: ITER: 59059 RES: 8.3006e-05
Jacobi stage: ITER: 59311 RES: 7.9855e-05
Jacobi stage: ITER: 59561 RES: 7.6823e-05
Jacobi stage: ITER: 59813 RES: 7.3906e-05
Jacobi stage: ITER: 60063 RES: 7.1144e-05
Jacobi stage: ITER: 60315 RES: 6.8443e-05
Jacobi stage: ITER: 60567 RES: 6.5844e-05
Jacobi stage: ITER: 60817 RES: 6.3344e-05
Jacobi stage: ITER: 61067 RES: 6.0976e-05
Jacobi stage: ITER: 61319 RES: 5.8661e-05
Jacobi stage: ITER: 61571 RES: 5.6434e-05
Jacobi stage: ITER: 61821 RES: 5.4291e-05
Jacobi stage: ITER: 62071 RES: 5.2262e-05
Jacobi stage: ITER: 62323 RES: 5.0278e-05
Jacobi stage: ITER: 62575 RES: 4.8369e-05
Jacobi stage: ITER: 62825 RES: 4.6532e-05
Jacobi stage: ITER: 63077 RES: 4.4766e-05
Jacobi stage: ITER: 63327 RES: 4.3092e-05
Jacobi stage: ITER: 63579 RES: 4.1456e-05
Jacobi stage: ITER: 63831 RES: 3.9882e-05
Jacobi stage: ITER: 64081 RES: 3.8368e-05
Jacobi stage: ITER: 64333 RES: 3.6911e-05
Jacobi stage: ITER: 64583 RES: 3.5532e-05
Jacobi stage: ITER: 64835 RES: 3.4183e-05
Jacobi stage: ITER: 65087 RES: 3.2885e-05
Jacobi stage: ITER: 65337 RES: 3.1636e-05
Jacobi stage: ITER: 65587 RES: 3.0454e-05
Jacobi stage: ITER: 65839 RES: 2.9297e-05
Jacobi stage: ITER: 66091 RES: 2.8185e-05
Jacobi stage: ITER: 66343 RES: 2.7115e-05
Jacobi stage: ITER: 66593 RES: 2.6085e-05
Jacobi stage: ITER: 66843 RES: 2.511e-05
Jacobi stage: ITER: 67095 RES: 2.4157e-05
Jacobi stage: ITER: 67347 RES: 2.324e-05
Jacobi stage: ITER: 67597 RES: 2.2357e-05
Jacobi stage: ITER: 67849 RES: 2.1509e-05
Jacobi stage: ITER: 68099 RES: 2.0705e-05
Jacobi stage: ITER: 68351 RES: 1.9919e-05
Jacobi stage: ITER: 68603 RES: 1.9162e-05
Jacobi stage: ITER: 68853 RES: 1.8435e-05
Jacobi stage: ITER: 69103 RES: 1.7746e-05
Jacobi stage: ITER: 69355 RES: 1.7072e-05
Jacobi stage: ITER: 69607 RES: 1.6424e-05
Jacobi stage: ITER: 69857 RES: 1.58e-05
Jacobi stage: ITER: 70109 RES: 1.52e-05
Jacobi stage: ITER: 70359 RES: 1.4632e-05
Jacobi stage: ITER: 70611 RES: 1.4077e-05
Jacobi stage: ITER: 70863 RES: 1.3542e-05
Jacobi stage: ITER: 71113 RES: 1.3028e-05
Jacobi stage: ITER: 71363 RES: 1.2541e-05
Jacobi stage: ITER: 71615 RES: 1.2065e-05
Jacobi stage: ITER: 71867 RES: 1.1607e-05
Jacobi stage: ITER: 72117 RES: 1.1166e-05
Jacobi stage: ITER: 72369 RES: 1.0742e-05
Jacobi stage: ITER: 72619 RES: 1.0341e-05
Jacobi stage: ITER: 72871 RES: 9.948e-06
Jacobi stage: ITER: 73123 RES: 9.5703e-06
Jacobi stage: ITER: 73373 RES: 9.2069e-06
Jacobi stage: ITER: 73623 RES: 8.8628e-06
Jacobi stage: ITER: 73875 RES: 8.5263e-06
Jacobi stage: ITER: 74127 RES: 8.2026e-06
Jacobi stage: ITER: 74379 RES: 7.8911e-06
Jacobi stage: ITER: 74629 RES: 7.5915e-06
Jacobi stage: ITER: 74879 RES: 7.3078e-06
Jacobi stage: ITER: 75131 RES: 7.0303e-06
Jacobi stage: ITER: 75383 RES: 6.7634e-06
Jacobi stage: ITER: 75633 RES: 6.5066e-06
Jacobi stage: ITER: 75885 RES: 6.2596e-06
Jacobi stage: ITER: 76135 RES: 6.0256e-06
Jacobi stage: ITER: 76387 RES: 5.7968e-06
Jacobi stage: ITER: 76637 RES: 5.5767e-06
Jacobi stage: ITER: 76889 RES: 5.365e-06
Jacobi stage: ITER: 77139 RES: 5.1645e-06
Jacobi stage: ITER: 77391 RES: 4.9684e-06
Jacobi stage: ITER: 77643 RES: 4.7797e-06
Jacobi stage: ITER: 77893 RES: 4.5983e-06
Jacobi stage: ITER: 78143 RES: 4.4264e-06
Jacobi stage: ITER: 78395 RES: 4.2583e-06
Jacobi stage: ITER: 78647 RES: 4.0967e-06
Jacobi stage: ITER: 78897 RES: 3.9411e-06
Jacobi stage: ITER: 79149 RES: 3.7915e-06
Jacobi stage: ITER: 79399 RES: 3.6498e-06
Jacobi stage: ITER: 79651 RES: 3.5112e-06
Jacobi stage: ITER: 79903 RES: 3.3779e-06
Jacobi stage: ITER: 80153 RES: 3.2496e-06
Jacobi stage: ITER: 80405 RES: 3.1262e-06
Jacobi stage: ITER: 80655 RES: 3.0094e-06
Jacobi stage: ITER: 80907 RES: 2.8951e-06
Jacobi stage: ITER: 81159 RES: 2.7852e-06
Jacobi stage: ITER: 81409 RES: 2.6795e-06
Jacobi stage: ITER: 81659 RES: 2.5793e-06
Jacobi stage: ITER: 81911 RES: 2.4814e-06
Jacobi stage: ITER: 82163 RES: 2.3872e-06
Jacobi stage: ITER: 82413 RES: 2.2965e-06
Jacobi stage: ITER: 82665 RES: 2.2093e-06
Jacobi stage: ITER: 82915 RES: 2.1268e-06
Jacobi stage: ITER: 83167 RES: 2.046e-06
Jacobi stage: ITER: 83419 RES: 1.9683e-06
Jacobi stage: ITER: 83669 RES: 1.8936e-06
Jacobi stage: ITER: 83919 RES: 1.8228e-06
Jacobi stage: ITER: 84171 RES: 1.7536e-06
Jacobi stage: ITER: 84423 RES: 1.687e-06
Jacobi stage: ITER: 84673 RES: 1.623e-06
Jacobi stage: ITER: 84925 RES: 1.5614e-06
Jacobi stage: ITER: 85175 RES: 1.503e-06
Jacobi stage: ITER: 85427 RES: 1.4459e-06
Jacobi stage: ITER: 85679 RES: 1.391e-06
Jacobi stage: ITER: 85929 RES: 1.3382e-06
Jacobi stage: ITER: 86181 RES: 1.2874e-06
Jacobi stage: ITER: 86431 RES: 1.2393e-06
Jacobi stage: ITER: 86683 RES: 1.1922e-06
Jacobi stage: ITER: 86935 RES: 1.147e-06
Jacobi stage: ITER: 87185 RES: 1.1034e-06
Jacobi stage: ITER: 87437 RES: 1.0615e-06
Jacobi stage: ITER: 87687 RES: 1.0218e-06
Vector x = [ 0.999999, 0.999999, 0.999998, 0.999999, 0.999999 ]

The following example shows how to employ timer (TNL::Timer) to the monitor of iterative solvers:

1#include <iostream>
2#include <memory>
3#include <TNL/Timer.h>
4#include <TNL/Matrices/SparseMatrix.h>
5#include <TNL/Devices/Sequential.h>
6#include <TNL/Devices/Cuda.h>
7#include <TNL/Solvers/Linear/Jacobi.h>
8
9template< typename Device >
10void
11iterativeLinearSolverExample()
12{
13 /***
14 * Set the following matrix (dots represent zero matrix elements):
15 *
16 * / 2.5 -1 . . . \
17 * | -1 2.5 -1 . . |
18 * | . -1 2.5 -1. . |
19 * | . . -1 2.5 -1 |
20 * \ . . . -1 2.5 /
21 */
24 const int size( 5 );
25 auto matrix_ptr = std::make_shared< MatrixType >();
26 matrix_ptr->setDimensions( size, size );
27 matrix_ptr->setRowCapacities( Vector( { 2, 3, 3, 3, 2 } ) );
28
29 auto f = [ = ] __cuda_callable__( typename MatrixType::RowView & row ) mutable
30 {
31 const int rowIdx = row.getRowIndex();
32 if( rowIdx == 0 ) {
33 row.setElement( 0, rowIdx, 2.5 ); // diagonal element
34 row.setElement( 1, rowIdx + 1, -1 ); // element above the diagonal
35 }
36 else if( rowIdx == size - 1 ) {
37 row.setElement( 0, rowIdx - 1, -1.0 ); // element below the diagonal
38 row.setElement( 1, rowIdx, 2.5 ); // diagonal element
39 }
40 else {
41 row.setElement( 0, rowIdx - 1, -1.0 ); // element below the diagonal
42 row.setElement( 1, rowIdx, 2.5 ); // diagonal element
43 row.setElement( 2, rowIdx + 1, -1.0 ); // element above the diagonal
44 }
45 };
46
47 /***
48 * Set the matrix elements.
49 */
50 matrix_ptr->forAllRows( f );
51 std::cout << *matrix_ptr << '\n';
52
53 /***
54 * Set the right-hand side vector.
55 */
56 Vector x( size, 1.0 );
57 Vector b( size );
58 matrix_ptr->vectorProduct( x, b );
59 x = 0.0;
60 std::cout << "Vector b = " << b << '\n';
61
62 /***
63 * Setup solver of the linear system.
64 */
66 LinearSolver solver;
67 solver.setMatrix( matrix_ptr );
68 solver.setOmega( 0.0005 );
69
70 /***
71 * Setup monitor of the iterative solver.
72 */
73 using IterativeSolverMonitorType = TNL::Solvers::IterativeSolverMonitor< double >;
74 IterativeSolverMonitorType monitor;
75 TNL::Solvers::SolverMonitorThread mmonitorThread( monitor );
76 monitor.setRefreshRate( 10 ); // refresh rate in milliseconds
77 monitor.setVerbose( 1 );
78 monitor.setStage( "Jacobi stage:" );
79 TNL::Timer timer;
80 monitor.setTimer( timer );
81 timer.start();
82 solver.setSolverMonitor( monitor );
83 solver.setConvergenceResidue( 1.0e-6 );
84 solver.solve( b, x );
85 monitor.stopMainLoop();
86 std::cout << "Vector x = " << x << '\n';
87}
88
89int
90main( int argc, char* argv[] )
91{
92 std::cout << "Solving linear system on host:\n";
93 iterativeLinearSolverExample< TNL::Devices::Sequential >();
94
95#ifdef __CUDACC__
96 std::cout << "Solving linear system on CUDA device:\n";
97 iterativeLinearSolverExample< TNL::Devices::Cuda >();
98#endif
99}
Class for real time, CPU time and CPU cycles measuring.
Definition Timer.h:25
void start()
Starts timer.

The result looks as follows:

Solving linear system on host:
Row: 0 -> 0:2.5 1:-1
Row: 1 -> 0:-1 1:2.5 2:-1
Row: 2 -> 1:-1 2:2.5 3:-1
Row: 3 -> 2:-1 3:2.5 4:-1
Row: 4 -> 3:-1 4:2.5
Vector b = [ 1.5, 0.5, 0.5, 0.5, 1.5 ]
ELA:2.2241e-
ELA: 0.10015 Jacobi stage: ITER: 23043 RES: 0.020974
ELA: 0.20028 Jacobi stage: ITER: 45943 RES: 0.00062238
ELA: 0.30059 Jacobi stage: ITER: 68987 RES: 1.8065e-05
Vector x = [ 0.999999, 0.999999, 0.999998, 0.999999, 0.999999 ]
Solving linear system on CUDA device:
Row: 0 -> 0:2.5 1:-1
Row: 1 -> 0:-1 1:2.5 2:-1
Row: 2 -> 1:-1 2:2.5 3:-1
Row: 3 -> 2:-1 3:2.5 4:-1
Row: 4 -> 3:-1 4:2.5
Vector b = [ 1.5, 0.5, 0.5, 0.5, 1.5 ]
ELA:2.8625e-
ELA: 0.10023 Jacobi stage: ITER: 371 RES: 0.88554
ELA: 0.20036 Jacobi stage: ITER: 747 RES: 0.79162
ELA: 0.30124 Jacobi stage: ITER: 1125 RES: 0.71438
ELA: 0.40136 Jacobi stage: ITER: 1503 RES: 0.65109
ELA: 0.50148 Jacobi stage: ITER: 1827 RES: 0.60459
ELA: 0.60161 Jacobi stage: ITER: 2079 RES: 0.57253
ELA: 0.70173 Jacobi stage: ITER: 2331 RES: 0.54345
ELA: 0.80185 Jacobi stage: ITER: 2583 RES: 0.51688
ELA: 0.90196 Jacobi stage: ITER: 2833 RES: 0.49247
ELA: 1.0021 Jacobi stage: ITER: 3083 RES: 0.47025
ELA: 1.1022 Jacobi stage: ITER: 3335 RES: 0.44926
ELA: 1.2023 Jacobi stage: ITER: 3589 RES: 0.42938
ELA: 1.3025 Jacobi stage: ITER: 3851 RES: 0.41048
ELA: 1.4026 Jacobi stage: ITER: 4067 RES: 0.39566
ELA: 1.5027 Jacobi stage: ITER: 4305 RES: 0.38003
ELA: 1.6032 Jacobi stage: ITER: 4557 RES: 0.3645
ELA: 1.7034 Jacobi stage: ITER: 4779 RES: 0.35159
ELA: 1.8035 Jacobi stage: ITER: 5031 RES: 0.3375
ELA: 1.9036 Jacobi stage: ITER: 5337 RES: 0.32119
ELA: 2.0037 Jacobi stage: ITER: 5607 RES: 0.30775
ELA: 2.1062 Jacobi stage: ITER: 5863 RES: 0.29551
ELA: 2.2063 Jacobi stage: ITER: 6115 RES: 0.28399
ELA: 2.3065 Jacobi stage: ITER: 6367 RES: 0.27297
ELA: 2.4066 Jacobi stage: ITER: 6587 RES: 0.26373
ELA: 2.5067 Jacobi stage: ITER: 6831 RES: 0.25387
ELA: 2.6068 Jacobi stage: ITER: 7081 RES: 0.2441
ELA: 2.7069 Jacobi stage: ITER: 7245 RES: 0.23795
ELA: 2.8071 Jacobi stage: ITER: 7411 RES: 0.23197
ELA: 2.9072 Jacobi stage: ITER: 7501 RES: 0.22869
ELA: 3.0073 Jacobi stage: ITER: 7613 RES: 0.22475
ELA: 3.1074 Jacobi stage: ITER: 7797 RES: 0.21844
ELA: 3.2082 Jacobi stage: ITER: 7915 RES: 0.21455
ELA: 3.3084 Jacobi stage: ITER: 8035 RES: 0.21061
ELA: 3.4085 Jacobi stage: ITER: 8107 RES: 0.20827
ELA: 3.5086 Jacobi stage: ITER: 8279 RES: 0.20281
ELA: 3.6087 Jacobi stage: ITER: 8499 RES: 0.19604
ELA: 3.7089 Jacobi stage: ITER: 8711 RES: 0.18973
ELA: 3.809 Jacobi stage: ITER: 8931 RES: 0.1834
ELA: 3.9192 Jacobi stage: ITER: 9187 RES: 0.17631
ELA: 4.0212 Jacobi stage: ITER: 9459 RES: 0.16908
ELA: 4.1252 Jacobi stage: ITER: 9703 RES: 0.16284
ELA: 4.2254 Jacobi stage: ITER: 9935 RES: 0.15713
ELA: 4.3255 Jacobi stage: ITER: 10137 RES: 0.15228
ELA: 4.4256 Jacobi stage: ITER: 10351 RES: 0.14739
ELA: 4.5257 Jacobi stage: ITER: 10531 RES: 0.14337
ELA: 4.6258 Jacobi stage: ITER: 10703 RES: 0.13962
ELA: 4.7259 Jacobi stage: ITER: 10925 RES: 0.1349
ELA: 4.826 Jacobi stage: ITER: 11173 RES: 0.12985
ELA: 4.9262 Jacobi stage: ITER: 11425 RES: 0.12492
ELA: 5.0262 Jacobi stage: ITER: 11679 RES: 0.12017
ELA: 5.1264 Jacobi stage: ITER: 11931 RES: 0.11561
ELA: 5.2278 Jacobi stage: ITER: 12159 RES: 0.11163
ELA: 5.3279 Jacobi stage: ITER: 12383 RES: 0.10785
ELA: 5.428 Jacobi stage: ITER: 12627 RES: 0.10388
ELA: 5.5282 Jacobi stage: ITER: 12843 RES: 0.10049
ELA: 5.6286 Jacobi stage: ITER: 13057 RES: 0.097211
ELA: 5.7287 Jacobi stage: ITER: 13295 RES: 0.09375
ELA: 5.8288 Jacobi stage: ITER: 13551 RES: 0.090134
ELA: 5.9289 Jacobi stage: ITER: 13805 RES: 0.086658
ELA: 6.0291 Jacobi stage: ITER: 14035 RES: 0.083675
ELA: 6.1292 Jacobi stage: ITER: 14251 RES: 0.080945
ELA: 6.2293 Jacobi stage: ITER: 14497 RES: 0.077919
ELA: 6.3295 Jacobi stage: ITER: 14703 RES: 0.075515
ELA: 6.43 Jacobi stage: ITER: 14915 RES: 0.073095
ELA: 6.5301 Jacobi stage: ITER: 15163 RES: 0.070363
ELA: 6.6302 Jacobi stage: ITER: 15415 RES: 0.067692
ELA: 6.7304 Jacobi stage: ITER: 15671 RES: 0.065081
ELA: 6.8314 Jacobi stage: ITER: 15903 RES: 0.062803
ELA: 6.9315 Jacobi stage: ITER: 16121 RES: 0.060716
ELA: 7.0322 Jacobi stage: ITER: 16375 RES: 0.058411
ELA: 7.1324 Jacobi stage: ITER: 16593 RES: 0.05647
ELA: 7.2331 Jacobi stage: ITER: 16811 RES: 0.054627
ELA: 7.3332 Jacobi stage: ITER: 17061 RES: 0.052553
ELA: 7.4333 Jacobi stage: ITER: 17309 RES: 0.050589
ELA: 7.5352 Jacobi stage: ITER: 17567 RES: 0.048638
ELA: 7.6354 Jacobi stage: ITER: 17823 RES: 0.046763
ELA: 7.7364 Jacobi stage: ITER: 18023 RES: 0.045348
ELA: 7.8365 Jacobi stage: ITER: 18269 RES: 0.043653
ELA: 7.9367 Jacobi stage: ITER: 18483 RES: 0.042254
ELA: 8.0368 Jacobi stage: ITER: 18731 RES: 0.040675
ELA: 8.1369 Jacobi stage: ITER: 18949 RES: 0.039323
ELA: 8.237 Jacobi stage: ITER: 19199 RES: 0.037854
ELA: 8.3372 Jacobi stage: ITER: 19451 RES: 0.036416
ELA: 8.4372 Jacobi stage: ITER: 19707 RES: 0.035012
ELA: 8.5382 Jacobi stage: ITER: 19899 RES: 0.033995
ELA: 8.6384 Jacobi stage: ITER: 20143 RES: 0.032744
ELA: 8.7385 Jacobi stage: ITER: 20359 RES: 0.031676
ELA: 8.8386 Jacobi stage: ITER: 20603 RES: 0.03051
ELA: 8.9387 Jacobi stage: ITER: 20821 RES: 0.029497
ELA: 9.0388 Jacobi stage: ITER: 21067 RES: 0.028412
ELA: 9.139 Jacobi stage: ITER: 21319 RES: 0.027333
ELA: 9.2391 Jacobi stage: ITER: 21571 RES: 0.026295
ELA: 9.3398 Jacobi stage: ITER: 21825 RES: 0.025281
ELA: 9.44 Jacobi stage: ITER: 22079 RES: 0.024321
ELA: 9.5401 Jacobi stage: ITER: 22333 RES: 0.023383
ELA: 9.6402 Jacobi stage: ITER: 22589 RES: 0.022482
ELA: 9.7404 Jacobi stage: ITER: 22735 RES: 0.02199
ELA: 9.8405 Jacobi stage: ITER: 22887 RES: 0.021483
ELA: 9.9406 Jacobi stage: ITER: 23123 RES: 0.020718
ELA: 10.041 Jacobi stage: ITER: 23371 RES: 0.019943
ELA: 10.142 Jacobi stage: ITER: 23625 RES: 0.019174
ELA: 10.242 Jacobi stage: ITER: 23879 RES: 0.018446
ELA: 10.342 Jacobi stage: ITER: 24143 RES: 0.017713
ELA: 10.443 Jacobi stage: ITER: 24385 RES: 0.017062
ELA: 10.543 Jacobi stage: ITER: 24641 RES: 0.016404
ELA: 10.643 Jacobi stage: ITER: 24893 RES: 0.015781
ELA: 10.743 Jacobi stage: ITER: 25133 RES: 0.01521
ELA: 10.843 Jacobi stage: ITER: 25379 RES: 0.01465
ELA: 10.943 Jacobi stage: ITER: 25603 RES: 0.014155
ELA: 11.043 Jacobi stage: ITER: 25863 RES: 0.013601
ELA: 11.143 Jacobi stage: ITER: 26115 RES: 0.013084
ELA: 11.244 Jacobi stage: ITER: 26347 RES: 0.012626
ELA: 11.344 Jacobi stage: ITER: 26599 RES: 0.012147
ELA: 11.444 Jacobi stage: ITER: 26851 RES: 0.011686
ELA: 11.544 Jacobi stage: ITER: 27107 RES: 0.011235
ELA: 11.644 Jacobi stage: ITER: 27307 RES: 0.010895
ELA: 11.747 Jacobi stage: ITER: 27553 RES: 0.010488
ELA: 11.847 Jacobi stage: ITER: 28335 RES: 0.0093038
ELA: 11.948 Jacobi stage: ITER: 28531 RES: 0.0090278
ELA: 12.048 Jacobi stage: ITER: 28739 RES: 0.008744
ELA: 12.15 Jacobi stage: ITER: 29001 RES: 0.0083965
ELA: 12.25 Jacobi stage: ITER: 29255 RES: 0.0080777
ELA: 12.35 Jacobi stage: ITER: 29509 RES: 0.0077662
ELA: 12.451 Jacobi stage: ITER: 29711 RES: 0.0075313
ELA: 12.551 Jacobi stage: ITER: 29945 RES: 0.0072632
ELA: 12.651 Jacobi stage: ITER: 30161 RES: 0.0070261
ELA: 12.751 Jacobi stage: ITER: 30391 RES: 0.0067843
ELA: 12.851 Jacobi stage: ITER: 30641 RES: 0.0065267
ELA: 12.951 Jacobi stage: ITER: 30895 RES: 0.0062789
ELA: 13.052 Jacobi stage: ITER: 31147 RES: 0.0060405
ELA: 13.152 Jacobi stage: ITER: 31397 RES: 0.0058112
ELA: 13.252 Jacobi stage: ITER: 31589 RES: 0.0056423
ELA: 13.353 Jacobi stage: ITER: 31789 RES: 0.0054716
ELA: 13.453 Jacobi stage: ITER: 32019 RES: 0.0052833
ELA: 13.553 Jacobi stage: ITER: 32267 RES: 0.0050858
ELA: 13.653 Jacobi stage: ITER: 32521 RES: 0.0048897
ELA: 13.754 Jacobi stage: ITER: 32773 RES: 0.0047041
ELA: 13.854 Jacobi stage: ITER: 33031 RES: 0.0045227
ELA: 13.954 Jacobi stage: ITER: 33261 RES: 0.0043644
ELA: 14.054 Jacobi stage: ITER: 33477 RES: 0.0042219
ELA: 14.154 Jacobi stage: ITER: 33695 RES: 0.0040842
ELA: 14.254 Jacobi stage: ITER: 33939 RES: 0.0039339
ELA: 14.354 Jacobi stage: ITER: 34191 RES: 0.0037846
ELA: 14.454 Jacobi stage: ITER: 34443 RES: 0.0036409
ELA: 14.555 Jacobi stage: ITER: 34699 RES: 0.0035005
ELA: 14.656 Jacobi stage: ITER: 34935 RES: 0.0033759
ELA: 14.756 Jacobi stage: ITER: 35167 RES: 0.0032577
ELA: 14.856 Jacobi stage: ITER: 35387 RES: 0.0031494
ELA: 14.957 Jacobi stage: ITER: 35627 RES: 0.0030354
ELA: 15.057 Jacobi stage: ITER: 35881 RES: 0.0029184
ELA: 15.157 Jacobi stage: ITER: 36133 RES: 0.0028076
ELA: 15.257 Jacobi stage: ITER: 36387 RES: 0.002701
ELA: 15.357 Jacobi stage: ITER: 36615 RES: 0.002608
ELA: 15.457 Jacobi stage: ITER: 36861 RES: 0.0025106
ELA: 15.558 Jacobi stage: ITER: 37111 RES: 0.0024167
ELA: 15.658 Jacobi stage: ITER: 37363 RES: 0.002325
ELA: 15.758 Jacobi stage: ITER: 37615 RES: 0.0022367
ELA: 15.859 Jacobi stage: ITER: 37867 RES: 0.0021518
ELA: 15.959 Jacobi stage: ITER: 38117 RES: 0.0020701
ELA: 16.059 Jacobi stage: ITER: 38367 RES: 0.0019927
ELA: 16.159 Jacobi stage: ITER: 38619 RES: 0.001917
ELA: 16.259 Jacobi stage: ITER: 38871 RES: 0.0018443
ELA: 16.359 Jacobi stage: ITER: 39121 RES: 0.0017742
ELA: 16.459 Jacobi stage: ITER: 39373 RES: 0.0017069
ELA: 16.559 Jacobi stage: ITER: 39623 RES: 0.0016431
ELA: 16.66 Jacobi stage: ITER: 39875 RES: 0.0015807
ELA: 16.76 Jacobi stage: ITER: 40127 RES: 0.0015207
ELA: 16.86 Jacobi stage: ITER: 40379 RES: 0.0014629
ELA: 16.96 Jacobi stage: ITER: 40629 RES: 0.0014074
ELA: 17.061 Jacobi stage: ITER: 40881 RES: 0.001354
ELA: 17.161 Jacobi stage: ITER: 41131 RES: 0.0013033
ELA: 17.261 Jacobi stage: ITER: 41383 RES: 0.0012539
ELA: 17.361 Jacobi stage: ITER: 41635 RES: 0.0012063
ELA: 17.461 Jacobi stage: ITER: 41885 RES: 0.0011605
ELA: 17.561 Jacobi stage: ITER: 42135 RES: 0.0011171
ELA: 17.662 Jacobi stage: ITER: 42389 RES: 0.001074
ELA: 17.762 Jacobi stage: ITER: 42641 RES: 0.0010332
ELA: 17.863 Jacobi stage: ITER: 42891 RES: 0.00099461
ELA: 17.963 Jacobi stage: ITER: 43143 RES: 0.00095685
ELA: 18.063 Jacobi stage: ITER: 43395 RES: 0.00092052
ELA: 18.163 Jacobi stage: ITER: 43645 RES: 0.00088557
ELA: 18.263 Jacobi stage: ITER: 43895 RES: 0.00085247
ELA: 18.363 Jacobi stage: ITER: 44147 RES: 0.0008201
ELA: 18.463 Jacobi stage: ITER: 44399 RES: 0.00078896
ELA: 18.563 Jacobi stage: ITER: 44651 RES: 0.00075901
ELA: 18.664 Jacobi stage: ITER: 44901 RES: 0.00073019
ELA: 18.764 Jacobi stage: ITER: 45151 RES: 0.0007029
ELA: 18.864 Jacobi stage: ITER: 45403 RES: 0.00067621
ELA: 18.964 Jacobi stage: ITER: 45655 RES: 0.00065053
ELA: 19.064 Jacobi stage: ITER: 45905 RES: 0.00062584
ELA: 19.164 Jacobi stage: ITER: 46157 RES: 0.00060207
ELA: 19.264 Jacobi stage: ITER: 46407 RES: 0.00057957
ELA: 19.365 Jacobi stage: ITER: 46659 RES: 0.00055756
ELA: 19.465 Jacobi stage: ITER: 46911 RES: 0.0005364
ELA: 19.565 Jacobi stage: ITER: 47161 RES: 0.00051603
ELA: 19.665 Jacobi stage: ITER: 47411 RES: 0.00049674
ELA: 19.765 Jacobi stage: ITER: 47663 RES: 0.00047788
ELA: 19.865 Jacobi stage: ITER: 47915 RES: 0.00045974
ELA: 19.965 Jacobi stage: ITER: 48165 RES: 0.00044228
ELA: 20.066 Jacobi stage: ITER: 48417 RES: 0.00042549
ELA: 20.166 Jacobi stage: ITER: 48667 RES: 0.00040959
ELA: 20.266 Jacobi stage: ITER: 48919 RES: 0.00039403
ELA: 20.366 Jacobi stage: ITER: 49171 RES: 0.00037907
ELA: 20.466 Jacobi stage: ITER: 49421 RES: 0.00036468
ELA: 20.566 Jacobi stage: ITER: 49671 RES: 0.00035105
ELA: 20.666 Jacobi stage: ITER: 49923 RES: 0.00033772
ELA: 20.767 Jacobi stage: ITER: 50175 RES: 0.0003249
ELA: 20.867 Jacobi stage: ITER: 50425 RES: 0.00031256
ELA: 20.967 Jacobi stage: ITER: 50677 RES: 0.0003007
ELA: 21.067 Jacobi stage: ITER: 50927 RES: 0.00028946
ELA: 21.167 Jacobi stage: ITER: 51179 RES: 0.00027847
ELA: 21.267 Jacobi stage: ITER: 51431 RES: 0.00026789
ELA: 21.367 Jacobi stage: ITER: 51681 RES: 0.00025772
ELA: 21.467 Jacobi stage: ITER: 51931 RES: 0.00024809
ELA: 21.568 Jacobi stage: ITER: 52183 RES: 0.00023867
ELA: 21.668 Jacobi stage: ITER: 52435 RES: 0.00022961
ELA: 21.768 Jacobi stage: ITER: 52685 RES: 0.00022089
ELA: 21.868 Jacobi stage: ITER: 52937 RES: 0.0002125
ELA: 21.968 Jacobi stage: ITER: 53187 RES: 0.00020456
ELA: 22.068 Jacobi stage: ITER: 53439 RES: 0.00019679
ELA: 22.168 Jacobi stage: ITER: 53691 RES: 0.00018932
ELA: 22.269 Jacobi stage: ITER: 53941 RES: 0.00018213
ELA: 22.369 Jacobi stage: ITER: 54191 RES: 0.00017533
ELA: 22.469 Jacobi stage: ITER: 54443 RES: 0.00016867
ELA: 22.569 Jacobi stage: ITER: 54695 RES: 0.00016227
ELA: 22.669 Jacobi stage: ITER: 54947 RES: 0.0001561
ELA: 22.769 Jacobi stage: ITER: 55197 RES: 0.00015018
ELA: 22.869 Jacobi stage: ITER: 55447 RES: 0.00014456
ELA: 22.97 Jacobi stage: ITER: 55699 RES: 0.00013908
ELA: 23.07 Jacobi stage: ITER: 55951 RES: 0.0001338
ELA: 23.17 Jacobi stage: ITER: 56203 RES: 0.00012872
ELA: 23.27 Jacobi stage: ITER: 56453 RES: 0.00012383
ELA: 23.37 Jacobi stage: ITER: 56703 RES: 0.0001192
ELA: 23.47 Jacobi stage: ITER: 56955 RES: 0.00011467
ELA: 23.57 Jacobi stage: ITER: 57207 RES: 0.00011032
ELA: 23.671 Jacobi stage: ITER: 57457 RES: 0.00010613
ELA: 23.771 Jacobi stage: ITER: 57709 RES: 0.0001021
ELA: 23.871 Jacobi stage: ITER: 57959 RES: 9.8286e-05
ELA: 23.971 Jacobi stage: ITER: 58211 RES: 9.4554e-05
ELA: 24.071 Jacobi stage: ITER: 58463 RES: 9.0964e-05
ELA: 24.171 Jacobi stage: ITER: 58713 RES: 8.751e-05
ELA: 24.271 Jacobi stage: ITER: 58963 RES: 8.424e-05
ELA: 24.371 Jacobi stage: ITER: 59215 RES: 8.1041e-05
ELA: 24.472 Jacobi stage: ITER: 59467 RES: 7.7964e-05
ELA: 24.572 Jacobi stage: ITER: 59717 RES: 7.5004e-05
ELA: 24.672 Jacobi stage: ITER: 59967 RES: 7.2201e-05
ELA: 24.772 Jacobi stage: ITER: 60219 RES: 6.9459e-05
ELA: 24.872 Jacobi stage: ITER: 60471 RES: 6.6822e-05
ELA: 24.972 Jacobi stage: ITER: 60723 RES: 6.4285e-05
ELA: 25.072 Jacobi stage: ITER: 60973 RES: 6.1844e-05
ELA: 25.172 Jacobi stage: ITER: 61223 RES: 5.9533e-05
ELA: 25.273 Jacobi stage: ITER: 61475 RES: 5.7272e-05
ELA: 25.373 Jacobi stage: ITER: 61727 RES: 5.5098e-05
ELA: 25.473 Jacobi stage: ITER: 61977 RES: 5.3006e-05
ELA: 25.573 Jacobi stage: ITER: 62229 RES: 5.0993e-05
ELA: 25.673 Jacobi stage: ITER: 62479 RES: 4.9087e-05
ELA: 25.773 Jacobi stage: ITER: 62731 RES: 4.7224e-05
ELA: 25.873 Jacobi stage: ITER: 62983 RES: 4.5431e-05
ELA: 25.973 Jacobi stage: ITER: 63233 RES: 4.3706e-05
ELA: 26.074 Jacobi stage: ITER: 63485 RES: 4.2046e-05
ELA: 26.174 Jacobi stage: ITER: 63735 RES: 4.0475e-05
ELA: 26.274 Jacobi stage: ITER: 63987 RES: 3.8938e-05
ELA: 26.374 Jacobi stage: ITER: 64239 RES: 3.746e-05
ELA: 26.474 Jacobi stage: ITER: 64489 RES: 3.6037e-05
ELA: 26.574 Jacobi stage: ITER: 64741 RES: 3.4669e-05
ELA: 26.674 Jacobi stage: ITER: 64991 RES: 3.3373e-05
ELA: 26.775 Jacobi stage: ITER: 65243 RES: 3.2106e-05
ELA: 26.875 Jacobi stage: ITER: 65495 RES: 3.0887e-05
ELA: 26.975 Jacobi stage: ITER: 65745 RES: 2.9714e-05
ELA: 27.075 Jacobi stage: ITER: 65995 RES: 2.8586e-05
ELA: 27.175 Jacobi stage: ITER: 66247 RES: 2.7518e-05
ELA: 27.275 Jacobi stage: ITER: 66499 RES: 2.6473e-05
ELA: 27.375 Jacobi stage: ITER: 66751 RES: 2.5468e-05
ELA: 27.475 Jacobi stage: ITER: 67001 RES: 2.4501e-05
ELA: 27.576 Jacobi stage: ITER: 67251 RES: 2.3585e-05
ELA: 27.676 Jacobi stage: ITER: 67503 RES: 2.269e-05
ELA: 27.776 Jacobi stage: ITER: 67755 RES: 2.1828e-05
ELA: 27.876 Jacobi stage: ITER: 68005 RES: 2.0999e-05
ELA: 27.976 Jacobi stage: ITER: 68257 RES: 2.0202e-05
ELA: 28.076 Jacobi stage: ITER: 68507 RES: 1.9447e-05
ELA: 28.176 Jacobi stage: ITER: 68759 RES: 1.8709e-05
ELA: 28.276 Jacobi stage: ITER: 69011 RES: 1.7998e-05
ELA: 28.377 Jacobi stage: ITER: 69261 RES: 1.7315e-05
ELA: 28.477 Jacobi stage: ITER: 69511 RES: 1.6668e-05
ELA: 28.577 Jacobi stage: ITER: 69763 RES: 1.6035e-05
ELA: 28.677 Jacobi stage: ITER: 70015 RES: 1.5426e-05
ELA: 28.777 Jacobi stage: ITER: 70267 RES: 1.484e-05
ELA: 28.877 Jacobi stage: ITER: 70517 RES: 1.4277e-05
ELA: 28.977 Jacobi stage: ITER: 70767 RES: 1.3743e-05
ELA: 29.077 Jacobi stage: ITER: 71019 RES: 1.3221e-05
ELA: 29.178 Jacobi stage: ITER: 71271 RES: 1.2719e-05
ELA: 29.278 Jacobi stage: ITER: 71521 RES: 1.2237e-05
ELA: 29.378 Jacobi stage: ITER: 71773 RES: 1.1772e-05
ELA: 29.478 Jacobi stage: ITER: 72023 RES: 1.1332e-05
ELA: 29.578 Jacobi stage: ITER: 72275 RES: 1.0902e-05
ELA: 29.678 Jacobi stage: ITER: 72527 RES: 1.0488e-05
ELA: 29.778 Jacobi stage: ITER: 72777 RES: 1.009e-05
ELA: 29.879 Jacobi stage: ITER: 73027 RES: 9.7125e-06
ELA: 29.979 Jacobi stage: ITER: 73279 RES: 9.3437e-06
ELA: 30.079 Jacobi stage: ITER: 73531 RES: 8.9889e-06
ELA: 30.179 Jacobi stage: ITER: 73781 RES: 8.6477e-06
ELA: 30.279 Jacobi stage: ITER: 74033 RES: 8.3193e-06
ELA: 30.379 Jacobi stage: ITER: 74283 RES: 8.0084e-06
ELA: 30.479 Jacobi stage: ITER: 74535 RES: 7.7043e-06
ELA: 30.579 Jacobi stage: ITER: 74787 RES: 7.4118e-06
ELA: 30.68 Jacobi stage: ITER: 75037 RES: 7.1304e-06
ELA: 30.78 Jacobi stage: ITER: 75289 RES: 6.8597e-06
ELA: 30.88 Jacobi stage: ITER: 75539 RES: 6.6033e-06
ELA: 30.98 Jacobi stage: ITER: 75791 RES: 6.3525e-06
ELA: 31.08 Jacobi stage: ITER: 76043 RES: 6.1114e-06
ELA: 31.18 Jacobi stage: ITER: 76293 RES: 5.8793e-06
ELA: 31.28 Jacobi stage: ITER: 76543 RES: 5.6596e-06
ELA: 31.38 Jacobi stage: ITER: 76795 RES: 5.4447e-06
ELA: 31.481 Jacobi stage: ITER: 77047 RES: 5.238e-06
ELA: 31.581 Jacobi stage: ITER: 77297 RES: 5.0391e-06
ELA: 31.681 Jacobi stage: ITER: 77549 RES: 4.8478e-06
ELA: 31.781 Jacobi stage: ITER: 77799 RES: 4.6666e-06
ELA: 31.881 Jacobi stage: ITER: 78051 RES: 4.4894e-06
ELA: 31.981 Jacobi stage: ITER: 78303 RES: 4.3189e-06
ELA: 32.081 Jacobi stage: ITER: 78553 RES: 4.155e-06
ELA: 32.181 Jacobi stage: ITER: 78803 RES: 3.9997e-06
ELA: 32.281 Jacobi stage: ITER: 79055 RES: 3.8478e-06
ELA: 32.382 Jacobi stage: ITER: 79307 RES: 3.7017e-06
ELA: 32.482 Jacobi stage: ITER: 79557 RES: 3.5612e-06
ELA: 32.582 Jacobi stage: ITER: 79809 RES: 3.4259e-06
ELA: 32.682 Jacobi stage: ITER: 80059 RES: 3.2979e-06
ELA: 32.782 Jacobi stage: ITER: 80311 RES: 3.1727e-06
ELA: 32.882 Jacobi stage: ITER: 80563 RES: 3.0522e-06
ELA: 32.982 Jacobi stage: ITER: 80813 RES: 2.9363e-06
ELA: 33.082 Jacobi stage: ITER: 81065 RES: 2.8248e-06
ELA: 33.183 Jacobi stage: ITER: 81315 RES: 2.7193e-06
ELA: 33.283 Jacobi stage: ITER: 81567 RES: 2.616e-06
ELA: 33.383 Jacobi stage: ITER: 81819 RES: 2.5167e-06
ELA: 33.483 Jacobi stage: ITER: 82069 RES: 2.4211e-06
ELA: 33.583 Jacobi stage: ITER: 82319 RES: 2.3306e-06
ELA: 33.683 Jacobi stage: ITER: 82571 RES: 2.2422e-06
ELA: 33.783 Jacobi stage: ITER: 82823 RES: 2.157e-06
ELA: 33.883 Jacobi stage: ITER: 83075 RES: 2.0751e-06
ELA: 33.984 Jacobi stage: ITER: 83325 RES: 1.9963e-06
ELA: 34.084 Jacobi stage: ITER: 83575 RES: 1.9217e-06
ELA: 34.184 Jacobi stage: ITER: 83827 RES: 1.8488e-06
ELA: 34.284 Jacobi stage: ITER: 84079 RES: 1.7786e-06
ELA: 34.384 Jacobi stage: ITER: 84329 RES: 1.711e-06
ELA: 34.484 Jacobi stage: ITER: 84581 RES: 1.6461e-06
ELA: 34.584 Jacobi stage: ITER: 84831 RES: 1.5845e-06
ELA: 34.684 Jacobi stage: ITER: 85083 RES: 1.5244e-06
ELA: 34.785 Jacobi stage: ITER: 85343 RES: 1.4647e-06
ELA: 34.885 Jacobi stage: ITER: 85721 RES: 1.3817e-06
ELA: 34.985 Jacobi stage: ITER: 86099 RES: 1.3041e-06
ELA: 35.085 Jacobi stage: ITER: 86475 RES: 1.2309e-06
ELA: 35.185 Jacobi stage: ITER: 86853 RES: 1.1611e-06
ELA: 35.285 Jacobi stage: ITER: 87237 RES: 1.0946e-06
ELA: 35.385 Jacobi stage: ITER: 87615 RES: 1.0332e-06
Vector x = [ 0.999999, 0.999999, 0.999998, 0.999999, 0.999999 ]

Member Function Documentation

◆ refresh()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::refresh ( )
overridevirtual

Causes that the monitor prints out the status of the solver.

Implements TNL::Solvers::SolverMonitor.

◆ setIterations()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::setIterations ( const IndexType & iterations)

Set number of the current iteration.

Parameters
iterationsis number of the current iteration.

◆ setNodesPerIteration()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::setNodesPerIteration ( const IndexType & nodes)

Set the number of nodes of the numerical mesh or lattice.

This can be used to compute the number of nodes processed per one second.

Parameters
nodesis number of nodes of the numerical mesh or lattice.

◆ setResidue()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::setResidue ( const RealType & residue)

Set residue of the current approximation of the solution.

Parameters
residueis a residue of the current approximation of the solution.

◆ setStage()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::setStage ( const std::string & stage)

This method can be used for naming a stage of the monitored solver.

The stage name can be used to differ between various stages of iterative solvers.

Parameters
stageis name of the solver stage.

◆ setTime()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::setTime ( const RealType & time)

Set the time of the simulated evolution if it is time dependent.

This can be used for example when solving parabolic or hyperbolic PDEs.

Parameters
timetime of the simulated evolution.

◆ setTimeStep()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::setTimeStep ( const RealType & timeStep)

Set the time step for time dependent iterative solvers.

Parameters
timeSteptime step of the time dependent iterative solver.

◆ setVerbose()

template<typename Real = double>
void TNL::Solvers::IterativeSolverMonitor< Real >::setVerbose ( const IndexType & verbose)

Set up the verbosity of the monitor.

Parameters
verboseis the new value of the verbosity of the monitor.

The documentation for this class was generated from the following file:
  • src/TNL/Solvers/IterativeSolverMonitor.h