Template Numerical Library version\ main:bdaf14e
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 >:
Collaboration diagram for TNL::Solvers::IterativeSolverMonitor< Real >:

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__
Definition Macros.h:49
Vector extends Array with algebraic operations.
Definition Vector.h:36
Implementation of sparse matrix, i.e. matrix storing only non-zero elements.
Definition SparseMatrix.h:55
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: 32915 RES: 0.004604
Jacobi stage: ITER: 65253 RES: 3.2047e-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: 5175 RES: 0.32975
Jacobi stage: ITER: 5503 RES: 0.31288
Jacobi stage: ITER: 5757 RES: 0.30041
Jacobi stage: ITER: 6009 RES: 0.28868
Jacobi stage: ITER: 6261 RES: 0.27746
Jacobi stage: ITER: 6513 RES: 0.26671
Jacobi stage: ITER: 6767 RES: 0.25641
Jacobi stage: ITER: 7019 RES: 0.24654
Jacobi stage: ITER: 7271 RES: 0.23707
Jacobi stage: ITER: 7523 RES: 0.22798
Jacobi stage: ITER: 7777 RES: 0.21911
Jacobi stage: ITER: 8031 RES: 0.21074
Jacobi stage: ITER: 8235 RES: 0.2042
Jacobi stage: ITER: 8451 RES: 0.1975
Jacobi stage: ITER: 8603 RES: 0.19292
Jacobi stage: ITER: 8753 RES: 0.18845
Jacobi stage: ITER: 8883 RES: 0.18477
Jacobi stage: ITER: 9035 RES: 0.18049
Jacobi stage: ITER: 9167 RES: 0.17685
Jacobi stage: ITER: 9315 RES: 0.17287
Jacobi stage: ITER: 9467 RES: 0.16887
Jacobi stage: ITER: 9597 RES: 0.16547
Jacobi stage: ITER: 9749 RES: 0.16164
Jacobi stage: ITER: 9879 RES: 0.15849
Jacobi stage: ITER: 10029 RES: 0.15483
Jacobi stage: ITER: 10183 RES: 0.15125
Jacobi stage: ITER: 10311 RES: 0.1483
Jacobi stage: ITER: 10463 RES: 0.14487
Jacobi stage: ITER: 10581 RES: 0.14222
Jacobi stage: ITER: 10813 RES: 0.13724
Jacobi stage: ITER: 11017 RES: 0.133
Jacobi stage: ITER: 11267 RES: 0.12803
Jacobi stage: ITER: 11511 RES: 0.12332
Jacobi stage: ITER: 11761 RES: 0.11863
Jacobi stage: ITER: 12003 RES: 0.11434
Jacobi stage: ITER: 12217 RES: 0.1106
Jacobi stage: ITER: 12421 RES: 0.10719
Jacobi stage: ITER: 12661 RES: 0.10331
Jacobi stage: ITER: 12875 RES: 0.099998
Jacobi stage: ITER: 13121 RES: 0.09626
Jacobi stage: ITER: 13375 RES: 0.092604
Jacobi stage: ITER: 13593 RES: 0.089527
Jacobi stage: ITER: 13775 RES: 0.087085
Jacobi stage: ITER: 14017 RES: 0.083881
Jacobi stage: ITER: 14269 RES: 0.080696
Jacobi stage: ITER: 14489 RES: 0.078015
Jacobi stage: ITER: 14739 RES: 0.075099
Jacobi stage: ITER: 14975 RES: 0.072425
Jacobi stage: ITER: 15183 RES: 0.070147
Jacobi stage: ITER: 15393 RES: 0.0679
Jacobi stage: ITER: 15639 RES: 0.065402
Jacobi stage: ITER: 15893 RES: 0.06288
Jacobi stage: ITER: 16115 RES: 0.060791
Jacobi stage: ITER: 16367 RES: 0.058483
Jacobi stage: ITER: 16597 RES: 0.056435
Jacobi stage: ITER: 16815 RES: 0.054593
Jacobi stage: ITER: 17023 RES: 0.052877
Jacobi stage: ITER: 17271 RES: 0.0509
Jacobi stage: ITER: 17521 RES: 0.048968
Jacobi stage: ITER: 17715 RES: 0.047545
Jacobi stage: ITER: 17951 RES: 0.045852
Jacobi stage: ITER: 18199 RES: 0.044138
Jacobi stage: ITER: 18453 RES: 0.042436
Jacobi stage: ITER: 18709 RES: 0.0408
Jacobi stage: ITER: 18943 RES: 0.039372
Jacobi stage: ITER: 19131 RES: 0.038251
Jacobi stage: ITER: 19365 RES: 0.036889
Jacobi stage: ITER: 19565 RES: 0.035773
Jacobi stage: ITER: 19787 RES: 0.034585
Jacobi stage: ITER: 20027 RES: 0.033333
Jacobi stage: ITER: 20275 RES: 0.032087
Jacobi stage: ITER: 20507 RES: 0.030964
Jacobi stage: ITER: 20719 RES: 0.029972
Jacobi stage: ITER: 20939 RES: 0.028976
Jacobi stage: ITER: 21191 RES: 0.027876
Jacobi stage: ITER: 21445 RES: 0.026801
Jacobi stage: ITER: 21697 RES: 0.025783
Jacobi stage: ITER: 21951 RES: 0.024804
Jacobi stage: ITER: 22203 RES: 0.023862
Jacobi stage: ITER: 22455 RES: 0.022956
Jacobi stage: ITER: 22707 RES: 0.022085
Jacobi stage: ITER: 22959 RES: 0.021246
Jacobi stage: ITER: 23211 RES: 0.02044
Jacobi stage: ITER: 23463 RES: 0.019664
Jacobi stage: ITER: 23717 RES: 0.018905
Jacobi stage: ITER: 23969 RES: 0.018188
Jacobi stage: ITER: 24221 RES: 0.017497
Jacobi stage: ITER: 24475 RES: 0.016833
Jacobi stage: ITER: 24727 RES: 0.016194
Jacobi stage: ITER: 24979 RES: 0.015579
Jacobi stage: ITER: 25231 RES: 0.014987
Jacobi stage: ITER: 25483 RES: 0.014418
Jacobi stage: ITER: 25735 RES: 0.013871
Jacobi stage: ITER: 25987 RES: 0.013344
Jacobi stage: ITER: 26239 RES: 0.012837
Jacobi stage: ITER: 26491 RES: 0.01235
Jacobi stage: ITER: 26745 RES: 0.011874
Jacobi stage: ITER: 26997 RES: 0.011423
Jacobi stage: ITER: 27249 RES: 0.010989
Jacobi stage: ITER: 27503 RES: 0.010572
Jacobi stage: ITER: 27755 RES: 0.010171
Jacobi stage: ITER: 28007 RES: 0.0097845
Jacobi stage: ITER: 28259 RES: 0.009413
Jacobi stage: ITER: 28511 RES: 0.0090556
Jacobi stage: ITER: 28763 RES: 0.0087118
Jacobi stage: ITER: 29015 RES: 0.008381
Jacobi stage: ITER: 29269 RES: 0.0080579
Jacobi stage: ITER: 29521 RES: 0.0077519
Jacobi stage: ITER: 29773 RES: 0.0074576
Jacobi stage: ITER: 30025 RES: 0.0071744
Jacobi stage: ITER: 30279 RES: 0.006902
Jacobi stage: ITER: 30531 RES: 0.00664
Jacobi stage: ITER: 30783 RES: 0.0063879
Jacobi stage: ITER: 31035 RES: 0.0061453
Jacobi stage: ITER: 31287 RES: 0.005912
Jacobi stage: ITER: 31539 RES: 0.0056876
Jacobi stage: ITER: 31793 RES: 0.0054682
Jacobi stage: ITER: 32045 RES: 0.0052606
Jacobi stage: ITER: 32299 RES: 0.0050609
Jacobi stage: ITER: 32551 RES: 0.0048687
Jacobi stage: ITER: 32803 RES: 0.0046839
Jacobi stage: ITER: 33055 RES: 0.004506
Jacobi stage: ITER: 33307 RES: 0.004335
Jacobi stage: ITER: 33561 RES: 0.0041678
Jacobi stage: ITER: 33813 RES: 0.0040096
Jacobi stage: ITER: 34065 RES: 0.0038573
Jacobi stage: ITER: 34319 RES: 0.0037109
Jacobi stage: ITER: 34571 RES: 0.00357
Jacobi stage: ITER: 34823 RES: 0.0034344
Jacobi stage: ITER: 35075 RES: 0.003304
Jacobi stage: ITER: 35329 RES: 0.0031766
Jacobi stage: ITER: 35581 RES: 0.003056
Jacobi stage: ITER: 35833 RES: 0.00294
Jacobi stage: ITER: 36087 RES: 0.0028284
Jacobi stage: ITER: 36339 RES: 0.002721
Jacobi stage: ITER: 36591 RES: 0.0026177
Jacobi stage: ITER: 36843 RES: 0.0025183
Jacobi stage: ITER: 37095 RES: 0.0024227
Jacobi stage: ITER: 37349 RES: 0.0023293
Jacobi stage: ITER: 37601 RES: 0.0022408
Jacobi stage: ITER: 37855 RES: 0.0021557
Jacobi stage: ITER: 38107 RES: 0.0020739
Jacobi stage: ITER: 38359 RES: 0.0019951
Jacobi stage: ITER: 38611 RES: 0.0019194
Jacobi stage: ITER: 38863 RES: 0.0018465
Jacobi stage: ITER: 39117 RES: 0.0017753
Jacobi stage: ITER: 39369 RES: 0.0017079
Jacobi stage: ITER: 39623 RES: 0.0016431
Jacobi stage: ITER: 39875 RES: 0.0015807
Jacobi stage: ITER: 40127 RES: 0.0015207
Jacobi stage: ITER: 40379 RES: 0.0014629
Jacobi stage: ITER: 40631 RES: 0.0014074
Jacobi stage: ITER: 40885 RES: 0.0013531
Jacobi stage: ITER: 41137 RES: 0.0013017
Jacobi stage: ITER: 41389 RES: 0.0012523
Jacobi stage: ITER: 41643 RES: 0.0012048
Jacobi stage: ITER: 41895 RES: 0.001159
Jacobi stage: ITER: 42147 RES: 0.001115
Jacobi stage: ITER: 42399 RES: 0.0010727
Jacobi stage: ITER: 42651 RES: 0.001032
Jacobi stage: ITER: 42905 RES: 0.00099217
Jacobi stage: ITER: 43157 RES: 0.0009545
Jacobi stage: ITER: 43409 RES: 0.00091826
Jacobi stage: ITER: 43663 RES: 0.00088339
Jacobi stage: ITER: 43915 RES: 0.00084985
Jacobi stage: ITER: 44167 RES: 0.00081758
Jacobi stage: ITER: 44419 RES: 0.00078654
Jacobi stage: ITER: 44671 RES: 0.00075668
Jacobi stage: ITER: 44925 RES: 0.0007275
Jacobi stage: ITER: 45177 RES: 0.00069988
Jacobi stage: ITER: 45431 RES: 0.00067331
Jacobi stage: ITER: 45683 RES: 0.00064774
Jacobi stage: ITER: 45935 RES: 0.00062315
Jacobi stage: ITER: 46187 RES: 0.00059949
Jacobi stage: ITER: 46439 RES: 0.00057673
Jacobi stage: ITER: 46691 RES: 0.00055483
Jacobi stage: ITER: 46945 RES: 0.00053344
Jacobi stage: ITER: 47197 RES: 0.00051318
Jacobi stage: ITER: 47451 RES: 0.0004937
Jacobi stage: ITER: 47703 RES: 0.00047495
Jacobi stage: ITER: 47955 RES: 0.00045692
Jacobi stage: ITER: 48207 RES: 0.00043957
Jacobi stage: ITER: 48459 RES: 0.00042288
Jacobi stage: ITER: 48713 RES: 0.00040658
Jacobi stage: ITER: 48965 RES: 0.00039114
Jacobi stage: ITER: 49219 RES: 0.00037629
Jacobi stage: ITER: 49471 RES: 0.000362
Jacobi stage: ITER: 49723 RES: 0.00034826
Jacobi stage: ITER: 49975 RES: 0.00033504
Jacobi stage: ITER: 50227 RES: 0.00032231
Jacobi stage: ITER: 50481 RES: 0.00030989
Jacobi stage: ITER: 50733 RES: 0.00029812
Jacobi stage: ITER: 50985 RES: 0.0002868
Jacobi stage: ITER: 51239 RES: 0.00027591
Jacobi stage: ITER: 51491 RES: 0.00026544
Jacobi stage: ITER: 51743 RES: 0.00025536
Jacobi stage: ITER: 51995 RES: 0.00024566
Jacobi stage: ITER: 52247 RES: 0.00023634
Jacobi stage: ITER: 52501 RES: 0.00022722
Jacobi stage: ITER: 52753 RES: 0.0002186
Jacobi stage: ITER: 53005 RES: 0.0002103
Jacobi stage: ITER: 53259 RES: 0.00020231
Jacobi stage: ITER: 53511 RES: 0.00019463
Jacobi stage: ITER: 53763 RES: 0.00018724
Jacobi stage: ITER: 54015 RES: 0.00018013
Jacobi stage: ITER: 54267 RES: 0.00017329
Jacobi stage: ITER: 54521 RES: 0.00016661
Jacobi stage: ITER: 54773 RES: 0.00016028
Jacobi stage: ITER: 55025 RES: 0.0001542
Jacobi stage: ITER: 55279 RES: 0.00014834
Jacobi stage: ITER: 55531 RES: 0.00014271
Jacobi stage: ITER: 55783 RES: 0.00013729
Jacobi stage: ITER: 56035 RES: 0.00013208
Jacobi stage: ITER: 56287 RES: 0.00012707
Jacobi stage: ITER: 56541 RES: 0.00012217
Jacobi stage: ITER: 56793 RES: 0.00011753
Jacobi stage: ITER: 57047 RES: 0.00011307
Jacobi stage: ITER: 57299 RES: 0.00010877
Jacobi stage: ITER: 57551 RES: 0.00010464
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: 58561 RES: 8.9578e-05
Jacobi stage: ITER: 58813 RES: 8.6176e-05
Jacobi stage: ITER: 59067 RES: 8.2905e-05
Jacobi stage: ITER: 59319 RES: 7.9757e-05
Jacobi stage: ITER: 59571 RES: 7.6729e-05
Jacobi stage: ITER: 59823 RES: 7.3815e-05
Jacobi stage: ITER: 60075 RES: 7.1013e-05
Jacobi stage: ITER: 60327 RES: 6.8317e-05
Jacobi stage: ITER: 60581 RES: 6.5682e-05
Jacobi stage: ITER: 60833 RES: 6.3188e-05
Jacobi stage: ITER: 61087 RES: 6.0789e-05
Jacobi stage: ITER: 61339 RES: 5.8481e-05
Jacobi stage: ITER: 61591 RES: 5.6261e-05
Jacobi stage: ITER: 61843 RES: 5.4125e-05
Jacobi stage: ITER: 62095 RES: 5.207e-05
Jacobi stage: ITER: 62347 RES: 5.0093e-05
Jacobi stage: ITER: 62601 RES: 4.8161e-05
Jacobi stage: ITER: 62853 RES: 4.6333e-05
Jacobi stage: ITER: 63105 RES: 4.4573e-05
Jacobi stage: ITER: 63357 RES: 4.2881e-05
Jacobi stage: ITER: 63609 RES: 4.1253e-05
Jacobi stage: ITER: 63863 RES: 3.9687e-05
Jacobi stage: ITER: 64115 RES: 3.818e-05
Jacobi stage: ITER: 64367 RES: 3.673e-05
Jacobi stage: ITER: 64619 RES: 3.5336e-05
Jacobi stage: ITER: 64871 RES: 3.3994e-05
Jacobi stage: ITER: 65125 RES: 3.2683e-05
Jacobi stage: ITER: 65377 RES: 3.1442e-05
Jacobi stage: ITER: 65631 RES: 3.0249e-05
Jacobi stage: ITER: 65883 RES: 2.91e-05
Jacobi stage: ITER: 66135 RES: 2.7995e-05
Jacobi stage: ITER: 66387 RES: 2.6932e-05
Jacobi stage: ITER: 66639 RES: 2.591e-05
Jacobi stage: ITER: 66891 RES: 2.4926e-05
Jacobi stage: ITER: 67145 RES: 2.3965e-05
Jacobi stage: ITER: 67397 RES: 2.3055e-05
Jacobi stage: ITER: 67651 RES: 2.218e-05
Jacobi stage: ITER: 67903 RES: 2.1337e-05
Jacobi stage: ITER: 68155 RES: 2.0527e-05
Jacobi stage: ITER: 68407 RES: 1.9748e-05
Jacobi stage: ITER: 68659 RES: 1.8998e-05
Jacobi stage: ITER: 68911 RES: 1.8277e-05
Jacobi stage: ITER: 69165 RES: 1.7572e-05
Jacobi stage: ITER: 69417 RES: 1.6905e-05
Jacobi stage: ITER: 69671 RES: 1.6263e-05
Jacobi stage: ITER: 69923 RES: 1.5646e-05
Jacobi stage: ITER: 70175 RES: 1.5052e-05
Jacobi stage: ITER: 70427 RES: 1.448e-05
Jacobi stage: ITER: 70679 RES: 1.393e-05
Jacobi stage: ITER: 70933 RES: 1.3393e-05
Jacobi stage: ITER: 71185 RES: 1.2885e-05
Jacobi stage: ITER: 71437 RES: 1.2395e-05
Jacobi stage: ITER: 71691 RES: 1.1925e-05
Jacobi stage: ITER: 71943 RES: 1.1472e-05
Jacobi stage: ITER: 72195 RES: 1.1036e-05
Jacobi stage: ITER: 72447 RES: 1.0617e-05
Jacobi stage: ITER: 72699 RES: 1.0214e-05
Jacobi stage: ITER: 72953 RES: 9.8205e-06
Jacobi stage: ITER: 73205 RES: 9.4476e-06
Jacobi stage: ITER: 73459 RES: 9.0889e-06
Jacobi stage: ITER: 73711 RES: 8.7438e-06
Jacobi stage: ITER: 73963 RES: 8.4118e-06
Jacobi stage: ITER: 74215 RES: 8.0925e-06
Jacobi stage: ITER: 74467 RES: 7.7852e-06
Jacobi stage: ITER: 74719 RES: 7.4896e-06
Jacobi stage: ITER: 74973 RES: 7.2008e-06
Jacobi stage: ITER: 75225 RES: 6.9274e-06
Jacobi stage: ITER: 75477 RES: 6.6644e-06
Jacobi stage: ITER: 75731 RES: 6.4114e-06
Jacobi stage: ITER: 75983 RES: 6.1679e-06
Jacobi stage: ITER: 76235 RES: 5.9338e-06
Jacobi stage: ITER: 76487 RES: 5.7085e-06
Jacobi stage: ITER: 76739 RES: 5.4917e-06
Jacobi stage: ITER: 76993 RES: 5.28e-06
Jacobi stage: ITER: 77245 RES: 5.0795e-06
Jacobi stage: ITER: 77497 RES: 4.8866e-06
Jacobi stage: ITER: 77751 RES: 4.7011e-06
Jacobi stage: ITER: 78003 RES: 4.5226e-06
Jacobi stage: ITER: 78255 RES: 4.3509e-06
Jacobi stage: ITER: 78507 RES: 4.1857e-06
Jacobi stage: ITER: 78759 RES: 4.0268e-06
Jacobi stage: ITER: 79011 RES: 3.8739e-06
Jacobi stage: ITER: 79265 RES: 3.7245e-06
Jacobi stage: ITER: 79517 RES: 3.5831e-06
Jacobi stage: ITER: 79771 RES: 3.4471e-06
Jacobi stage: ITER: 80023 RES: 3.3162e-06
Jacobi stage: ITER: 80275 RES: 3.1903e-06
Jacobi stage: ITER: 80527 RES: 3.0691e-06
Jacobi stage: ITER: 80779 RES: 2.9526e-06
Jacobi stage: ITER: 81031 RES: 2.8405e-06
Jacobi stage: ITER: 81285 RES: 2.731e-06
Jacobi stage: ITER: 81537 RES: 2.6273e-06
Jacobi stage: ITER: 81789 RES: 2.5275e-06
Jacobi stage: ITER: 82043 RES: 2.4316e-06
Jacobi stage: ITER: 82295 RES: 2.3393e-06
Jacobi stage: ITER: 82547 RES: 2.2504e-06
Jacobi stage: ITER: 82799 RES: 2.165e-06
Jacobi stage: ITER: 83051 RES: 2.0828e-06
Jacobi stage: ITER: 83305 RES: 2.0025e-06
Jacobi stage: ITER: 83557 RES: 1.9264e-06
Jacobi stage: ITER: 83809 RES: 1.8533e-06
Jacobi stage: ITER: 84063 RES: 1.7829e-06
Jacobi stage: ITER: 84315 RES: 1.7152e-06
Jacobi stage: ITER: 84567 RES: 1.6501e-06
Jacobi stage: ITER: 84819 RES: 1.5875e-06
Jacobi stage: ITER: 85071 RES: 1.5272e-06
Jacobi stage: ITER: 85323 RES: 1.4692e-06
Jacobi stage: ITER: 85577 RES: 1.4126e-06
Jacobi stage: ITER: 85829 RES: 1.3589e-06
Jacobi stage: ITER: 86079 RES: 1.3081e-06
Jacobi stage: ITER: 86331 RES: 1.2585e-06
Jacobi stage: ITER: 86581 RES: 1.2107e-06
Jacobi stage: ITER: 86831 RES: 1.1654e-06
Jacobi stage: ITER: 87083 RES: 1.1212e-06
Jacobi stage: ITER: 87333 RES: 1.0786e-06
Jacobi stage: ITER: 87583 RES: 1.0383e-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:6.7896e-
ELA: 0.10017 Jacobi stage: ITER: 29447 RES: 0.0078429
ELA: 0.20028 Jacobi stage: ITER: 60871 RES: 6.2801e-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:1.2417e-
ELA: 0.10012 Jacobi stage: ITER: 351 RES: 0.89113
ELA: 0.20022 Jacobi stage: ITER: 603 RES: 0.82525
ELA: 0.30031 Jacobi stage: ITER: 855 RES: 0.76808
ELA: 0.40041 Jacobi stage: ITER: 1107 RES: 0.71808
ELA: 0.50051 Jacobi stage: ITER: 1359 RES: 0.67401
ELA: 0.60062 Jacobi stage: ITER: 1611 RES: 0.63486
ELA: 0.70073 Jacobi stage: ITER: 1863 RES: 0.59981
ELA: 0.80084 Jacobi stage: ITER: 2117 RES: 0.56773
ELA: 0.90094 Jacobi stage: ITER: 2369 RES: 0.53907
ELA: 1.001 Jacobi stage: ITER: 2623 RES: 0.51287
ELA: 1.1011 Jacobi stage: ITER: 2877 RES: 0.4884
ELA: 1.2012 Jacobi stage: ITER: 3091 RES: 0.46956
ELA: 1.3013 Jacobi stage: ITER: 3315 RES: 0.45088
ELA: 1.4014 Jacobi stage: ITER: 3467 RES: 0.43884
ELA: 1.5015 Jacobi stage: ITER: 3619 RES: 0.42728
ELA: 1.6016 Jacobi stage: ITER: 3749 RES: 0.4176
ELA: 1.7017 Jacobi stage: ITER: 3901 RES: 0.40684
ELA: 1.8018 Jacobi stage: ITER: 4033 RES: 0.3978
ELA: 1.9019 Jacobi stage: ITER: 4181 RES: 0.388
ELA: 2.002 Jacobi stage: ITER: 4333 RES: 0.37826
ELA: 2.1021 Jacobi stage: ITER: 4463 RES: 0.37032
ELA: 2.2022 Jacobi stage: ITER: 4615 RES: 0.36115
ELA: 2.3023 Jacobi stage: ITER: 4747 RES: 0.35343
ELA: 2.4024 Jacobi stage: ITER: 4895 RES: 0.34501
ELA: 2.5025 Jacobi stage: ITER: 5047 RES: 0.33663
ELA: 2.6026 Jacobi stage: ITER: 5175 RES: 0.32975
ELA: 2.7027 Jacobi stage: ITER: 5329 RES: 0.3216
ELA: 2.8028 Jacobi stage: ITER: 5467 RES: 0.31468
ELA: 2.9029 Jacobi stage: ITER: 5665 RES: 0.30483
ELA: 3.003 Jacobi stage: ITER: 5871 RES: 0.29513
ELA: 3.1031 Jacobi stage: ITER: 6123 RES: 0.28363
ELA: 3.2032 Jacobi stage: ITER: 6369 RES: 0.2728
ELA: 3.3033 Jacobi stage: ITER: 6621 RES: 0.26225
ELA: 3.4034 Jacobi stage: ITER: 6879 RES: 0.25198
ELA: 3.5035 Jacobi stage: ITER: 7105 RES: 0.24319
ELA: 3.6036 Jacobi stage: ITER: 7283 RES: 0.23663
ELA: 3.7037 Jacobi stage: ITER: 7527 RES: 0.22784
ELA: 3.8038 Jacobi stage: ITER: 7743 RES: 0.22034
ELA: 3.9039 Jacobi stage: ITER: 7989 RES: 0.21204
ELA: 4.004 Jacobi stage: ITER: 8243 RES: 0.20394
ELA: 4.1041 Jacobi stage: ITER: 8461 RES: 0.19713
ELA: 4.2042 Jacobi stage: ITER: 8649 RES: 0.1915
ELA: 4.3043 Jacobi stage: ITER: 8893 RES: 0.18442
ELA: 4.4044 Jacobi stage: ITER: 9145 RES: 0.1774
ELA: 4.5045 Jacobi stage: ITER: 9369 RES: 0.17138
ELA: 4.6046 Jacobi stage: ITER: 9621 RES: 0.16486
ELA: 4.7047 Jacobi stage: ITER: 9877 RES: 0.15849
ELA: 4.8048 Jacobi stage: ITER: 10065 RES: 0.15397
ELA: 4.9049 Jacobi stage: ITER: 10275 RES: 0.14912
ELA: 5.005 Jacobi stage: ITER: 10525 RES: 0.14345
ELA: 5.1051 Jacobi stage: ITER: 10779 RES: 0.138
ELA: 5.2052 Jacobi stage: ITER: 11003 RES: 0.13333
ELA: 5.3053 Jacobi stage: ITER: 11255 RES: 0.12826
ELA: 5.4054 Jacobi stage: ITER: 11513 RES: 0.12324
ELA: 5.5055 Jacobi stage: ITER: 11707 RES: 0.11966
ELA: 5.6056 Jacobi stage: ITER: 11915 RES: 0.11589
ELA: 5.7057 Jacobi stage: ITER: 12167 RES: 0.11149
ELA: 5.8058 Jacobi stage: ITER: 12419 RES: 0.10726
ELA: 5.9059 Jacobi stage: ITER: 12641 RES: 0.10363
ELA: 6.006 Jacobi stage: ITER: 12851 RES: 0.10037
ELA: 6.106 Jacobi stage: ITER: 13103 RES: 0.096556
ELA: 6.2062 Jacobi stage: ITER: 13359 RES: 0.092832
ELA: 6.3062 Jacobi stage: ITER: 13615 RES: 0.089252
ELA: 6.4064 Jacobi stage: ITER: 13871 RES: 0.08581
ELA: 6.5065 Jacobi stage: ITER: 14037 RES: 0.083624
ELA: 6.6066 Jacobi stage: ITER: 14273 RES: 0.080647
ELA: 6.7067 Jacobi stage: ITER: 14475 RES: 0.078207
ELA: 6.8068 Jacobi stage: ITER: 14697 RES: 0.075561
ELA: 6.9069 Jacobi stage: ITER: 14939 RES: 0.072826
ELA: 7.007 Jacobi stage: ITER: 15191 RES: 0.070061
ELA: 7.107 Jacobi stage: ITER: 15423 RES: 0.067608
ELA: 7.2071 Jacobi stage: ITER: 15637 RES: 0.065402
ELA: 7.3072 Jacobi stage: ITER: 15861 RES: 0.06319
ELA: 7.4074 Jacobi stage: ITER: 16113 RES: 0.060791
ELA: 7.5075 Jacobi stage: ITER: 16365 RES: 0.058483
ELA: 7.6075 Jacobi stage: ITER: 16619 RES: 0.056262
ELA: 7.7077 Jacobi stage: ITER: 16871 RES: 0.054126
ELA: 7.8078 Jacobi stage: ITER: 17123 RES: 0.052071
ELA: 7.9079 Jacobi stage: ITER: 17375 RES: 0.050094
ELA: 8.008 Jacobi stage: ITER: 17627 RES: 0.048192
ELA: 8.1081 Jacobi stage: ITER: 17879 RES: 0.046362
ELA: 8.2082 Jacobi stage: ITER: 18133 RES: 0.044574
ELA: 8.3083 Jacobi stage: ITER: 18385 RES: 0.042882
ELA: 8.4084 Jacobi stage: ITER: 18637 RES: 0.041254
ELA: 8.5085 Jacobi stage: ITER: 18891 RES: 0.039687
ELA: 8.6086 Jacobi stage: ITER: 19143 RES: 0.038181
ELA: 8.7087 Jacobi stage: ITER: 19395 RES: 0.036731
ELA: 8.8088 Jacobi stage: ITER: 19647 RES: 0.035336
ELA: 8.9089 Jacobi stage: ITER: 19899 RES: 0.033995
ELA: 9.0091 Jacobi stage: ITER: 20151 RES: 0.032704
ELA: 9.1092 Jacobi stage: ITER: 20403 RES: 0.031462
ELA: 9.2093 Jacobi stage: ITER: 20655 RES: 0.030268
ELA: 9.3094 Jacobi stage: ITER: 20909 RES: 0.029101
ELA: 9.4095 Jacobi stage: ITER: 21161 RES: 0.027996
ELA: 9.5096 Jacobi stage: ITER: 21415 RES: 0.026933
ELA: 9.6097 Jacobi stage: ITER: 21667 RES: 0.02591
ELA: 9.7097 Jacobi stage: ITER: 21919 RES: 0.024926
ELA: 9.8098 Jacobi stage: ITER: 22171 RES: 0.02398
ELA: 9.9099 Jacobi stage: ITER: 22423 RES: 0.02307
ELA: 10.01 Jacobi stage: ITER: 22675 RES: 0.022194
ELA: 10.11 Jacobi stage: ITER: 22929 RES: 0.021338
ELA: 10.21 Jacobi stage: ITER: 23181 RES: 0.020528
ELA: 10.31 Jacobi stage: ITER: 23435 RES: 0.019748
ELA: 10.411 Jacobi stage: ITER: 23687 RES: 0.018999
ELA: 10.511 Jacobi stage: ITER: 23939 RES: 0.018277
ELA: 10.611 Jacobi stage: ITER: 24191 RES: 0.017583
ELA: 10.711 Jacobi stage: ITER: 24443 RES: 0.016916
ELA: 10.811 Jacobi stage: ITER: 24695 RES: 0.016273
ELA: 10.911 Jacobi stage: ITER: 24949 RES: 0.015646
ELA: 11.011 Jacobi stage: ITER: 25201 RES: 0.015052
ELA: 11.111 Jacobi stage: ITER: 25455 RES: 0.01448
ELA: 11.212 Jacobi stage: ITER: 25707 RES: 0.013931
ELA: 11.312 Jacobi stage: ITER: 25959 RES: 0.013402
ELA: 11.412 Jacobi stage: ITER: 26211 RES: 0.012893
ELA: 11.512 Jacobi stage: ITER: 26463 RES: 0.012403
ELA: 11.612 Jacobi stage: ITER: 26715 RES: 0.011932
ELA: 11.712 Jacobi stage: ITER: 26969 RES: 0.011472
ELA: 11.812 Jacobi stage: ITER: 27221 RES: 0.011037
ELA: 11.912 Jacobi stage: ITER: 27475 RES: 0.010618
ELA: 12.013 Jacobi stage: ITER: 27727 RES: 0.010215
ELA: 12.113 Jacobi stage: ITER: 27979 RES: 0.0098267
ELA: 12.213 Jacobi stage: ITER: 28231 RES: 0.0094536
ELA: 12.313 Jacobi stage: ITER: 28483 RES: 0.0090947
ELA: 12.413 Jacobi stage: ITER: 28737 RES: 0.008744
ELA: 12.513 Jacobi stage: ITER: 28989 RES: 0.008412
ELA: 12.613 Jacobi stage: ITER: 29241 RES: 0.0080926
ELA: 12.713 Jacobi stage: ITER: 29495 RES: 0.0077853
ELA: 12.814 Jacobi stage: ITER: 29747 RES: 0.0074897
ELA: 12.914 Jacobi stage: ITER: 29999 RES: 0.0072054
ELA: 13.014 Jacobi stage: ITER: 30251 RES: 0.0069318
ELA: 13.114 Jacobi stage: ITER: 30505 RES: 0.0066645
ELA: 13.214 Jacobi stage: ITER: 30757 RES: 0.0064115
ELA: 13.314 Jacobi stage: ITER: 31009 RES: 0.006168
ELA: 13.414 Jacobi stage: ITER: 31263 RES: 0.0059339
ELA: 13.515 Jacobi stage: ITER: 31515 RES: 0.0057086
ELA: 13.615 Jacobi stage: ITER: 31767 RES: 0.0054918
ELA: 13.715 Jacobi stage: ITER: 32019 RES: 0.0052833
ELA: 13.815 Jacobi stage: ITER: 32271 RES: 0.0050827
ELA: 13.915 Jacobi stage: ITER: 32525 RES: 0.0048867
ELA: 14.015 Jacobi stage: ITER: 32777 RES: 0.0047012
ELA: 14.115 Jacobi stage: ITER: 33031 RES: 0.0045227
ELA: 14.215 Jacobi stage: ITER: 33283 RES: 0.004351
ELA: 14.316 Jacobi stage: ITER: 33535 RES: 0.0041858
ELA: 14.416 Jacobi stage: ITER: 33787 RES: 0.0040268
ELA: 14.516 Jacobi stage: ITER: 34039 RES: 0.003874
ELA: 14.616 Jacobi stage: ITER: 34293 RES: 0.0037246
ELA: 14.716 Jacobi stage: ITER: 34545 RES: 0.0035832
ELA: 14.816 Jacobi stage: ITER: 34799 RES: 0.0034471
ELA: 14.916 Jacobi stage: ITER: 35051 RES: 0.0033162
ELA: 15.017 Jacobi stage: ITER: 35303 RES: 0.0031903
ELA: 15.117 Jacobi stage: ITER: 35555 RES: 0.0030692
ELA: 15.217 Jacobi stage: ITER: 35807 RES: 0.0029527
ELA: 15.317 Jacobi stage: ITER: 36059 RES: 0.0028406
ELA: 15.417 Jacobi stage: ITER: 36313 RES: 0.002731
ELA: 15.517 Jacobi stage: ITER: 36565 RES: 0.0026273
ELA: 15.617 Jacobi stage: ITER: 36819 RES: 0.0025276
ELA: 15.717 Jacobi stage: ITER: 37071 RES: 0.0024316
ELA: 15.818 Jacobi stage: ITER: 37323 RES: 0.0023393
ELA: 15.918 Jacobi stage: ITER: 37575 RES: 0.0022505
ELA: 16.018 Jacobi stage: ITER: 37827 RES: 0.002165
ELA: 16.118 Jacobi stage: ITER: 38081 RES: 0.0020815
ELA: 16.218 Jacobi stage: ITER: 38333 RES: 0.0020025
ELA: 16.318 Jacobi stage: ITER: 38585 RES: 0.0019265
ELA: 16.418 Jacobi stage: ITER: 38839 RES: 0.0018533
ELA: 16.518 Jacobi stage: ITER: 39091 RES: 0.001783
ELA: 16.619 Jacobi stage: ITER: 39343 RES: 0.0017153
ELA: 16.719 Jacobi stage: ITER: 39595 RES: 0.0016501
ELA: 16.819 Jacobi stage: ITER: 39847 RES: 0.0015875
ELA: 16.919 Jacobi stage: ITER: 40101 RES: 0.0015263
ELA: 17.019 Jacobi stage: ITER: 40353 RES: 0.0014683
ELA: 17.119 Jacobi stage: ITER: 40605 RES: 0.0014126
ELA: 17.219 Jacobi stage: ITER: 40859 RES: 0.001359
ELA: 17.32 Jacobi stage: ITER: 41111 RES: 0.0013074
ELA: 17.42 Jacobi stage: ITER: 41363 RES: 0.0012577
ELA: 17.52 Jacobi stage: ITER: 41615 RES: 0.00121
ELA: 17.62 Jacobi stage: ITER: 41869 RES: 0.0011633
ELA: 17.72 Jacobi stage: ITER: 42121 RES: 0.0011191
ELA: 17.82 Jacobi stage: ITER: 42373 RES: 0.0010766
ELA: 17.92 Jacobi stage: ITER: 42627 RES: 0.0010358
ELA: 18.02 Jacobi stage: ITER: 42879 RES: 0.00099644
ELA: 18.121 Jacobi stage: ITER: 43131 RES: 0.00095861
ELA: 18.221 Jacobi stage: ITER: 43383 RES: 0.00092221
ELA: 18.321 Jacobi stage: ITER: 43635 RES: 0.0008872
ELA: 18.421 Jacobi stage: ITER: 43889 RES: 0.00085299
ELA: 18.521 Jacobi stage: ITER: 44141 RES: 0.0008206
ELA: 18.621 Jacobi stage: ITER: 44395 RES: 0.00078945
ELA: 18.721 Jacobi stage: ITER: 44647 RES: 0.00075947
ELA: 18.822 Jacobi stage: ITER: 44899 RES: 0.00073064
ELA: 18.922 Jacobi stage: ITER: 45151 RES: 0.0007029
ELA: 19.022 Jacobi stage: ITER: 45403 RES: 0.00067621
ELA: 19.122 Jacobi stage: ITER: 45657 RES: 0.00065014
ELA: 19.222 Jacobi stage: ITER: 45909 RES: 0.00062545
ELA: 19.322 Jacobi stage: ITER: 46161 RES: 0.0006017
ELA: 19.422 Jacobi stage: ITER: 46415 RES: 0.00057886
ELA: 19.522 Jacobi stage: ITER: 46667 RES: 0.00055688
ELA: 19.623 Jacobi stage: ITER: 46919 RES: 0.00053574
ELA: 19.723 Jacobi stage: ITER: 47171 RES: 0.0005154
ELA: 19.823 Jacobi stage: ITER: 47423 RES: 0.00049583
ELA: 19.923 Jacobi stage: ITER: 47677 RES: 0.00047671
ELA: 20.023 Jacobi stage: ITER: 47929 RES: 0.00045861
ELA: 20.123 Jacobi stage: ITER: 48181 RES: 0.0004412
ELA: 20.223 Jacobi stage: ITER: 48435 RES: 0.00042444
ELA: 20.323 Jacobi stage: ITER: 48687 RES: 0.00040833
ELA: 20.424 Jacobi stage: ITER: 48939 RES: 0.00039283
ELA: 20.524 Jacobi stage: ITER: 49191 RES: 0.00037791
ELA: 20.624 Jacobi stage: ITER: 49443 RES: 0.00036356
ELA: 20.724 Jacobi stage: ITER: 49697 RES: 0.00034954
ELA: 20.824 Jacobi stage: ITER: 49949 RES: 0.00033627
ELA: 20.924 Jacobi stage: ITER: 50203 RES: 0.0003235
ELA: 21.024 Jacobi stage: ITER: 50455 RES: 0.00031122
ELA: 21.125 Jacobi stage: ITER: 50707 RES: 0.00029941
ELA: 21.225 Jacobi stage: ITER: 50959 RES: 0.00028804
ELA: 21.325 Jacobi stage: ITER: 51211 RES: 0.0002771
ELA: 21.425 Jacobi stage: ITER: 51463 RES: 0.00026658
ELA: 21.525 Jacobi stage: ITER: 51717 RES: 0.0002563
ELA: 21.625 Jacobi stage: ITER: 51969 RES: 0.00024657
ELA: 21.725 Jacobi stage: ITER: 52223 RES: 0.00023721
ELA: 21.825 Jacobi stage: ITER: 52475 RES: 0.0002282
ELA: 21.926 Jacobi stage: ITER: 52727 RES: 0.00021954
ELA: 22.026 Jacobi stage: ITER: 52979 RES: 0.0002112
ELA: 22.126 Jacobi stage: ITER: 53231 RES: 0.00020318
ELA: 22.226 Jacobi stage: ITER: 53485 RES: 0.00019535
ELA: 22.326 Jacobi stage: ITER: 53737 RES: 0.00018793
ELA: 22.426 Jacobi stage: ITER: 53991 RES: 0.0001808
ELA: 22.526 Jacobi stage: ITER: 54243 RES: 0.00017393
ELA: 22.627 Jacobi stage: ITER: 54495 RES: 0.00016733
ELA: 22.727 Jacobi stage: ITER: 54747 RES: 0.00016097
ELA: 22.827 Jacobi stage: ITER: 54999 RES: 0.00015486
ELA: 22.927 Jacobi stage: ITER: 55251 RES: 0.00014898
ELA: 23.027 Jacobi stage: ITER: 55505 RES: 0.00014324
ELA: 23.127 Jacobi stage: ITER: 55757 RES: 0.0001378
ELA: 23.227 Jacobi stage: ITER: 56011 RES: 0.00013257
ELA: 23.327 Jacobi stage: ITER: 56263 RES: 0.00012753
ELA: 23.428 Jacobi stage: ITER: 56515 RES: 0.00012269
ELA: 23.528 Jacobi stage: ITER: 56767 RES: 0.00011803
ELA: 23.628 Jacobi stage: ITER: 57019 RES: 0.00011355
ELA: 23.728 Jacobi stage: ITER: 57271 RES: 0.00010924
ELA: 23.828 Jacobi stage: ITER: 57525 RES: 0.00010503
ELA: 23.928 Jacobi stage: ITER: 57777 RES: 0.00010104
ELA: 24.028 Jacobi stage: ITER: 58029 RES: 9.7205e-05
ELA: 24.129 Jacobi stage: ITER: 58281 RES: 9.3514e-05
ELA: 24.229 Jacobi stage: ITER: 58533 RES: 8.9964e-05
ELA: 24.329 Jacobi stage: ITER: 58787 RES: 8.6548e-05
ELA: 24.429 Jacobi stage: ITER: 59039 RES: 8.3262e-05
ELA: 24.529 Jacobi stage: ITER: 59291 RES: 8.0101e-05
ELA: 24.629 Jacobi stage: ITER: 59543 RES: 7.7059e-05
ELA: 24.729 Jacobi stage: ITER: 59795 RES: 7.4134e-05
ELA: 24.829 Jacobi stage: ITER: 60047 RES: 7.1319e-05
ELA: 24.929 Jacobi stage: ITER: 60299 RES: 6.8611e-05
ELA: 25.029 Jacobi stage: ITER: 60553 RES: 6.5965e-05
ELA: 25.129 Jacobi stage: ITER: 60805 RES: 6.3461e-05
ELA: 25.229 Jacobi stage: ITER: 61057 RES: 6.1051e-05
ELA: 25.33 Jacobi stage: ITER: 61311 RES: 5.8733e-05
ELA: 25.43 Jacobi stage: ITER: 61563 RES: 5.6503e-05
ELA: 25.53 Jacobi stage: ITER: 61815 RES: 5.4358e-05
ELA: 25.63 Jacobi stage: ITER: 62067 RES: 5.2294e-05
ELA: 25.73 Jacobi stage: ITER: 62319 RES: 5.0309e-05
ELA: 25.83 Jacobi stage: ITER: 62571 RES: 4.8399e-05
ELA: 25.93 Jacobi stage: ITER: 62823 RES: 4.6561e-05
ELA: 26.03 Jacobi stage: ITER: 63075 RES: 4.4793e-05
ELA: 26.13 Jacobi stage: ITER: 63329 RES: 4.3066e-05
ELA: 26.23 Jacobi stage: ITER: 63581 RES: 4.1431e-05
ELA: 26.33 Jacobi stage: ITER: 63833 RES: 3.9858e-05
ELA: 26.43 Jacobi stage: ITER: 64087 RES: 3.8344e-05
ELA: 26.53 Jacobi stage: ITER: 64339 RES: 3.6889e-05
ELA: 26.631 Jacobi stage: ITER: 64591 RES: 3.5488e-05
ELA: 26.731 Jacobi stage: ITER: 64843 RES: 3.4141e-05
ELA: 26.831 Jacobi stage: ITER: 65095 RES: 3.2844e-05
ELA: 26.931 Jacobi stage: ITER: 65347 RES: 3.1597e-05
ELA: 27.031 Jacobi stage: ITER: 65599 RES: 3.0398e-05
ELA: 27.131 Jacobi stage: ITER: 65853 RES: 2.9226e-05
ELA: 27.231 Jacobi stage: ITER: 66105 RES: 2.8116e-05
ELA: 27.331 Jacobi stage: ITER: 66357 RES: 2.7048e-05
ELA: 27.431 Jacobi stage: ITER: 66611 RES: 2.6021e-05
ELA: 27.531 Jacobi stage: ITER: 66863 RES: 2.5033e-05
ELA: 27.631 Jacobi stage: ITER: 67115 RES: 2.4083e-05
ELA: 27.731 Jacobi stage: ITER: 67367 RES: 2.3169e-05
ELA: 27.831 Jacobi stage: ITER: 67619 RES: 2.2289e-05
ELA: 27.932 Jacobi stage: ITER: 67871 RES: 2.1443e-05
ELA: 28.032 Jacobi stage: ITER: 68123 RES: 2.0628e-05
ELA: 28.132 Jacobi stage: ITER: 68377 RES: 1.9833e-05
ELA: 28.232 Jacobi stage: ITER: 68629 RES: 1.908e-05
ELA: 28.332 Jacobi stage: ITER: 68881 RES: 1.8356e-05
ELA: 28.432 Jacobi stage: ITER: 69135 RES: 1.7659e-05
ELA: 28.532 Jacobi stage: ITER: 69387 RES: 1.6988e-05
ELA: 28.632 Jacobi stage: ITER: 69639 RES: 1.6343e-05
ELA: 28.733 Jacobi stage: ITER: 69891 RES: 1.5723e-05
ELA: 28.833 Jacobi stage: ITER: 70143 RES: 1.5126e-05
ELA: 28.933 Jacobi stage: ITER: 70397 RES: 1.4543e-05
ELA: 29.033 Jacobi stage: ITER: 70649 RES: 1.399e-05
ELA: 29.133 Jacobi stage: ITER: 70901 RES: 1.3459e-05
ELA: 29.233 Jacobi stage: ITER: 71155 RES: 1.2948e-05
ELA: 29.333 Jacobi stage: ITER: 71407 RES: 1.2457e-05
ELA: 29.433 Jacobi stage: ITER: 71659 RES: 1.1984e-05
ELA: 29.534 Jacobi stage: ITER: 71911 RES: 1.1529e-05
ELA: 29.634 Jacobi stage: ITER: 72163 RES: 1.1091e-05
ELA: 29.734 Jacobi stage: ITER: 72415 RES: 1.067e-05
ELA: 29.834 Jacobi stage: ITER: 72669 RES: 1.0258e-05
ELA: 29.934 Jacobi stage: ITER: 72921 RES: 9.8689e-06
ELA: 30.034 Jacobi stage: ITER: 73173 RES: 9.4942e-06
ELA: 30.134 Jacobi stage: ITER: 73427 RES: 9.1337e-06
ELA: 30.234 Jacobi stage: ITER: 73679 RES: 8.7869e-06
ELA: 30.334 Jacobi stage: ITER: 73931 RES: 8.4533e-06
ELA: 30.434 Jacobi stage: ITER: 74183 RES: 8.1323e-06
ELA: 30.535 Jacobi stage: ITER: 74435 RES: 7.8236e-06
ELA: 30.635 Jacobi stage: ITER: 74687 RES: 7.5265e-06
ELA: 30.735 Jacobi stage: ITER: 74939 RES: 7.2407e-06
ELA: 30.835 Jacobi stage: ITER: 75193 RES: 6.9616e-06
ELA: 30.935 Jacobi stage: ITER: 75445 RES: 6.6972e-06
ELA: 31.035 Jacobi stage: ITER: 75699 RES: 6.443e-06
ELA: 31.135 Jacobi stage: ITER: 75951 RES: 6.1983e-06
ELA: 31.235 Jacobi stage: ITER: 76203 RES: 5.963e-06
ELA: 31.336 Jacobi stage: ITER: 76455 RES: 5.7366e-06
ELA: 31.436 Jacobi stage: ITER: 76707 RES: 5.5188e-06
ELA: 31.536 Jacobi stage: ITER: 76959 RES: 5.3092e-06
ELA: 31.636 Jacobi stage: ITER: 77213 RES: 5.1045e-06
ELA: 31.736 Jacobi stage: ITER: 77465 RES: 4.9107e-06
ELA: 31.836 Jacobi stage: ITER: 77717 RES: 4.7243e-06
ELA: 31.936 Jacobi stage: ITER: 77971 RES: 4.5449e-06
ELA: 32.037 Jacobi stage: ITER: 78223 RES: 4.3723e-06
ELA: 32.137 Jacobi stage: ITER: 78475 RES: 4.2063e-06
ELA: 32.237 Jacobi stage: ITER: 78727 RES: 4.0466e-06
ELA: 32.337 Jacobi stage: ITER: 78979 RES: 3.893e-06
ELA: 32.437 Jacobi stage: ITER: 79233 RES: 3.7429e-06
ELA: 32.537 Jacobi stage: ITER: 79485 RES: 3.6008e-06
ELA: 32.637 Jacobi stage: ITER: 79737 RES: 3.464e-06
ELA: 32.737 Jacobi stage: ITER: 79991 RES: 3.3325e-06
ELA: 32.838 Jacobi stage: ITER: 80243 RES: 3.206e-06
ELA: 32.938 Jacobi stage: ITER: 80495 RES: 3.0843e-06
ELA: 33.038 Jacobi stage: ITER: 80747 RES: 2.9672e-06
ELA: 33.138 Jacobi stage: ITER: 80999 RES: 2.8545e-06
ELA: 33.238 Jacobi stage: ITER: 81249 RES: 2.7461e-06
ELA: 33.338 Jacobi stage: ITER: 81499 RES: 2.6435e-06
ELA: 33.438 Jacobi stage: ITER: 81751 RES: 2.5431e-06
ELA: 33.539 Jacobi stage: ITER: 82001 RES: 2.4466e-06
ELA: 33.639 Jacobi stage: ITER: 82251 RES: 2.3551e-06
ELA: 33.739 Jacobi stage: ITER: 82503 RES: 2.2657e-06
ELA: 33.839 Jacobi stage: ITER: 82753 RES: 2.1797e-06
ELA: 33.939 Jacobi stage: ITER: 83111 RES: 2.0637e-06
ELA: 34.039 Jacobi stage: ITER: 83489 RES: 1.9467e-06
ELA: 34.139 Jacobi stage: ITER: 83867 RES: 1.8374e-06
ELA: 34.239 Jacobi stage: ITER: 84243 RES: 1.7343e-06
ELA: 34.34 Jacobi stage: ITER: 84621 RES: 1.636e-06
ELA: 34.44 Jacobi stage: ITER: 84999 RES: 1.5442e-06
ELA: 34.54 Jacobi stage: ITER: 85375 RES: 1.4575e-06
ELA: 34.64 Jacobi stage: ITER: 85763 RES: 1.3732e-06
ELA: 34.74 Jacobi stage: ITER: 86141 RES: 1.2953e-06
ELA: 34.84 Jacobi stage: ITER: 86519 RES: 1.2226e-06
ELA: 34.94 Jacobi stage: ITER: 86895 RES: 1.154e-06
ELA: 35.04 Jacobi stage: ITER: 87271 RES: 1.0893e-06
ELA: 35.141 Jacobi stage: ITER: 87649 RES: 1.0275e-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: