Template Numerical Library version\ main:8246197
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 }
Timer * timer = 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:59
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: 40101 RES: 0.0015263
Jacobi stage: ITER: 80177 RES: 3.2377e-06
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: 5771 RES: 0.29984
Jacobi stage: ITER: 7715 RES: 0.2213
Jacobi stage: ITER: 8151 RES: 0.20686
Jacobi stage: ITER: 8451 RES: 0.1975
Jacobi stage: ITER: 8763 RES: 0.18822
Jacobi stage: ITER: 9067 RES: 0.1796
Jacobi stage: ITER: 9379 RES: 0.17117
Jacobi stage: ITER: 9695 RES: 0.16304
Jacobi stage: ITER: 10005 RES: 0.1554
Jacobi stage: ITER: 10313 RES: 0.14821
Jacobi stage: ITER: 10619 RES: 0.14144
Jacobi stage: ITER: 10919 RES: 0.13506
Jacobi stage: ITER: 11151 RES: 0.13033
Jacobi stage: ITER: 11335 RES: 0.1267
Jacobi stage: ITER: 11515 RES: 0.12324
Jacobi stage: ITER: 11701 RES: 0.11973
Jacobi stage: ITER: 11887 RES: 0.11639
Jacobi stage: ITER: 12075 RES: 0.11308
Jacobi stage: ITER: 12265 RES: 0.10979
Jacobi stage: ITER: 12447 RES: 0.10679
Jacobi stage: ITER: 12627 RES: 0.10388
Jacobi stage: ITER: 12819 RES: 0.10086
Jacobi stage: ITER: 13007 RES: 0.097991
Jacobi stage: ITER: 13199 RES: 0.095142
Jacobi stage: ITER: 13451 RES: 0.091529
Jacobi stage: ITER: 13759 RES: 0.0873
Jacobi stage: ITER: 14065 RES: 0.083265
Jacobi stage: ITER: 14375 RES: 0.079417
Jacobi stage: ITER: 14693 RES: 0.075608
Jacobi stage: ITER: 15011 RES: 0.072025
Jacobi stage: ITER: 15315 RES: 0.068739
Jacobi stage: ITER: 15619 RES: 0.065603
Jacobi stage: ITER: 15935 RES: 0.062495
Jacobi stage: ITER: 16253 RES: 0.059497
Jacobi stage: ITER: 16567 RES: 0.056713
Jacobi stage: ITER: 16859 RES: 0.054226
Jacobi stage: ITER: 17157 RES: 0.051784
Jacobi stage: ITER: 17467 RES: 0.049391
Jacobi stage: ITER: 17783 RES: 0.047051
Jacobi stage: ITER: 18103 RES: 0.044794
Jacobi stage: ITER: 18401 RES: 0.042777
Jacobi stage: ITER: 18713 RES: 0.040775
Jacobi stage: ITER: 19029 RES: 0.038843
Jacobi stage: ITER: 19347 RES: 0.037003
Jacobi stage: ITER: 19659 RES: 0.035271
Jacobi stage: ITER: 19937 RES: 0.033786
Jacobi stage: ITER: 20241 RES: 0.032245
Jacobi stage: ITER: 20555 RES: 0.030736
Jacobi stage: ITER: 20871 RES: 0.02928
Jacobi stage: ITER: 21187 RES: 0.027893
Jacobi stage: ITER: 21495 RES: 0.026604
Jacobi stage: ITER: 21807 RES: 0.025359
Jacobi stage: ITER: 22103 RES: 0.024232
Jacobi stage: ITER: 22419 RES: 0.023084
Jacobi stage: ITER: 22725 RES: 0.022017
Jacobi stage: ITER: 23017 RES: 0.021051
Jacobi stage: ITER: 23305 RES: 0.02014
Jacobi stage: ITER: 23575 RES: 0.019328
Jacobi stage: ITER: 23883 RES: 0.018435
Jacobi stage: ITER: 24167 RES: 0.017648
Jacobi stage: ITER: 25643 RES: 0.014068
Jacobi stage: ITER: 26071 RES: 0.013173
Jacobi stage: ITER: 26417 RES: 0.012487
Jacobi stage: ITER: 26733 RES: 0.011896
Jacobi stage: ITER: 27047 RES: 0.011339
Jacobi stage: ITER: 27363 RES: 0.010802
Jacobi stage: ITER: 27679 RES: 0.01029
Jacobi stage: ITER: 27991 RES: 0.0098086
Jacobi stage: ITER: 28303 RES: 0.0093496
Jacobi stage: ITER: 28571 RES: 0.0089725
Jacobi stage: ITER: 28843 RES: 0.0086054
Jacobi stage: ITER: 29149 RES: 0.0082078
Jacobi stage: ITER: 29455 RES: 0.0078333
Jacobi stage: ITER: 29769 RES: 0.0074622
Jacobi stage: ITER: 30085 RES: 0.0071086
Jacobi stage: ITER: 30419 RES: 0.0067552
Jacobi stage: ITER: 30743 RES: 0.0064273
Jacobi stage: ITER: 31061 RES: 0.006119
Jacobi stage: ITER: 31383 RES: 0.0058255
Jacobi stage: ITER: 31695 RES: 0.0055529
Jacobi stage: ITER: 31985 RES: 0.0053093
Jacobi stage: ITER: 32269 RES: 0.0050827
Jacobi stage: ITER: 32597 RES: 0.004833
Jacobi stage: ITER: 32895 RES: 0.0046182
Jacobi stage: ITER: 33199 RES: 0.0044075
Jacobi stage: ITER: 33513 RES: 0.0041987
Jacobi stage: ITER: 33943 RES: 0.0039315
Jacobi stage: ITER: 34249 RES: 0.0037498
Jacobi stage: ITER: 34565 RES: 0.0035722
Jacobi stage: ITER: 34875 RES: 0.0034071
Jacobi stage: ITER: 35171 RES: 0.0032557
Jacobi stage: ITER: 35467 RES: 0.003111
Jacobi stage: ITER: 35759 RES: 0.0029745
Jacobi stage: ITER: 36065 RES: 0.0028371
Jacobi stage: ITER: 36375 RES: 0.002706
Jacobi stage: ITER: 36679 RES: 0.0025825
Jacobi stage: ITER: 36995 RES: 0.0024602
Jacobi stage: ITER: 37311 RES: 0.0023436
Jacobi stage: ITER: 37631 RES: 0.0022312
Jacobi stage: ITER: 37949 RES: 0.0021242
Jacobi stage: ITER: 38263 RES: 0.0020248
Jacobi stage: ITER: 38577 RES: 0.0019289
Jacobi stage: ITER: 38863 RES: 0.0018465
Jacobi stage: ITER: 39173 RES: 0.0017601
Jacobi stage: ITER: 39495 RES: 0.0016757
Jacobi stage: ITER: 39827 RES: 0.0015924
Jacobi stage: ITER: 40127 RES: 0.0015207
Jacobi stage: ITER: 40433 RES: 0.0014504
Jacobi stage: ITER: 40749 RES: 0.0013817
Jacobi stage: ITER: 41061 RES: 0.001317
Jacobi stage: ITER: 41371 RES: 0.0012562
Jacobi stage: ITER: 41683 RES: 0.0011974
Jacobi stage: ITER: 41995 RES: 0.0011414
Jacobi stage: ITER: 42307 RES: 0.001088
Jacobi stage: ITER: 42617 RES: 0.001037
Jacobi stage: ITER: 42929 RES: 0.00098852
Jacobi stage: ITER: 43239 RES: 0.00094284
Jacobi stage: ITER: 43551 RES: 0.00089872
Jacobi stage: ITER: 43863 RES: 0.00085667
Jacobi stage: ITER: 44175 RES: 0.00081658
Jacobi stage: ITER: 44485 RES: 0.00077837
Jacobi stage: ITER: 44797 RES: 0.00074195
Jacobi stage: ITER: 45107 RES: 0.00070766
Jacobi stage: ITER: 45419 RES: 0.00067455
Jacobi stage: ITER: 45731 RES: 0.00064298
Jacobi stage: ITER: 46043 RES: 0.0006129
Jacobi stage: ITER: 46355 RES: 0.00058422
Jacobi stage: ITER: 46665 RES: 0.00055688
Jacobi stage: ITER: 46977 RES: 0.00053082
Jacobi stage: ITER: 47287 RES: 0.00050629
Jacobi stage: ITER: 47599 RES: 0.0004826
Jacobi stage: ITER: 47911 RES: 0.00046002
Jacobi stage: ITER: 48223 RES: 0.00043849
Jacobi stage: ITER: 48533 RES: 0.00041798
Jacobi stage: ITER: 48845 RES: 0.00039842
Jacobi stage: ITER: 49157 RES: 0.00037977
Jacobi stage: ITER: 49467 RES: 0.00036222
Jacobi stage: ITER: 49779 RES: 0.00034528
Jacobi stage: ITER: 50091 RES: 0.00032912
Jacobi stage: ITER: 50403 RES: 0.00031372
Jacobi stage: ITER: 50713 RES: 0.00029904
Jacobi stage: ITER: 51025 RES: 0.00028504
Jacobi stage: ITER: 51337 RES: 0.00027171
Jacobi stage: ITER: 51647 RES: 0.00025915
Jacobi stage: ITER: 51959 RES: 0.00024703
Jacobi stage: ITER: 52271 RES: 0.00023547
Jacobi stage: ITER: 52583 RES: 0.00022445
Jacobi stage: ITER: 52893 RES: 0.00021394
Jacobi stage: ITER: 53205 RES: 0.00020393
Jacobi stage: ITER: 53515 RES: 0.00019451
Jacobi stage: ITER: 53827 RES: 0.00018541
Jacobi stage: ITER: 54139 RES: 0.00017673
Jacobi stage: ITER: 54451 RES: 0.00016846
Jacobi stage: ITER: 54761 RES: 0.00016058
Jacobi stage: ITER: 55073 RES: 0.00015307
Jacobi stage: ITER: 55385 RES: 0.0001459
Jacobi stage: ITER: 55695 RES: 0.00013916
Jacobi stage: ITER: 56007 RES: 0.00013265
Jacobi stage: ITER: 56319 RES: 0.00012644
Jacobi stage: ITER: 56631 RES: 0.00012053
Jacobi stage: ITER: 56941 RES: 0.00011489
Jacobi stage: ITER: 57253 RES: 0.00010951
Jacobi stage: ITER: 57563 RES: 0.00010445
Jacobi stage: ITER: 57875 RES: 9.9562e-05
Jacobi stage: ITER: 58187 RES: 9.4903e-05
Jacobi stage: ITER: 58499 RES: 9.0462e-05
Jacobi stage: ITER: 58809 RES: 8.6229e-05
Jacobi stage: ITER: 59121 RES: 8.2194e-05
Jacobi stage: ITER: 59433 RES: 7.8348e-05
Jacobi stage: ITER: 59743 RES: 7.4728e-05
Jacobi stage: ITER: 60055 RES: 7.1231e-05
Jacobi stage: ITER: 60367 RES: 6.7898e-05
Jacobi stage: ITER: 60679 RES: 6.4721e-05
Jacobi stage: ITER: 60989 RES: 6.1692e-05
Jacobi stage: ITER: 61301 RES: 5.8806e-05
Jacobi stage: ITER: 61613 RES: 5.6054e-05
Jacobi stage: ITER: 61923 RES: 5.3464e-05
Jacobi stage: ITER: 62235 RES: 5.0962e-05
Jacobi stage: ITER: 62547 RES: 4.8577e-05
Jacobi stage: ITER: 62859 RES: 4.6304e-05
Jacobi stage: ITER: 63169 RES: 4.4137e-05
Jacobi stage: ITER: 63481 RES: 4.2072e-05
Jacobi stage: ITER: 63791 RES: 4.0128e-05
Jacobi stage: ITER: 64103 RES: 3.825e-05
Jacobi stage: ITER: 64415 RES: 3.646e-05
Jacobi stage: ITER: 64727 RES: 3.4754e-05
Jacobi stage: ITER: 65037 RES: 3.3128e-05
Jacobi stage: ITER: 65349 RES: 3.1578e-05
Jacobi stage: ITER: 65661 RES: 3.01e-05
Jacobi stage: ITER: 65971 RES: 2.8709e-05
Jacobi stage: ITER: 66283 RES: 2.7366e-05
Jacobi stage: ITER: 66595 RES: 2.6085e-05
Jacobi stage: ITER: 66907 RES: 2.4865e-05
Jacobi stage: ITER: 67217 RES: 2.3701e-05
Jacobi stage: ITER: 67529 RES: 2.2592e-05
Jacobi stage: ITER: 67839 RES: 2.1548e-05
Jacobi stage: ITER: 68151 RES: 2.054e-05
Jacobi stage: ITER: 68463 RES: 1.9579e-05
Jacobi stage: ITER: 68775 RES: 1.8663e-05
Jacobi stage: ITER: 69085 RES: 1.7789e-05
Jacobi stage: ITER: 69397 RES: 1.6957e-05
Jacobi stage: ITER: 69707 RES: 1.6173e-05
Jacobi stage: ITER: 70019 RES: 1.5417e-05
Jacobi stage: ITER: 70331 RES: 1.4695e-05
Jacobi stage: ITER: 70643 RES: 1.4008e-05
Jacobi stage: ITER: 70955 RES: 1.3352e-05
Jacobi stage: ITER: 71265 RES: 1.2727e-05
Jacobi stage: ITER: 71577 RES: 1.2132e-05
Jacobi stage: ITER: 71887 RES: 1.1571e-05
Jacobi stage: ITER: 72199 RES: 1.103e-05
Jacobi stage: ITER: 72511 RES: 1.0514e-05
Jacobi stage: ITER: 72823 RES: 1.0022e-05
Jacobi stage: ITER: 73133 RES: 9.5527e-06
Jacobi stage: ITER: 73445 RES: 9.1057e-06
Jacobi stage: ITER: 73757 RES: 8.6796e-06
Jacobi stage: ITER: 74067 RES: 8.2785e-06
Jacobi stage: ITER: 74379 RES: 7.8911e-06
Jacobi stage: ITER: 74691 RES: 7.5219e-06
Jacobi stage: ITER: 75003 RES: 7.1699e-06
Jacobi stage: ITER: 75313 RES: 6.8344e-06
Jacobi stage: ITER: 75625 RES: 6.5146e-06
Jacobi stage: ITER: 75935 RES: 6.2136e-06
Jacobi stage: ITER: 76247 RES: 5.9228e-06
Jacobi stage: ITER: 76559 RES: 5.6457e-06
Jacobi stage: ITER: 76871 RES: 5.3815e-06
Jacobi stage: ITER: 77183 RES: 5.1297e-06
Jacobi stage: ITER: 77493 RES: 4.8896e-06
Jacobi stage: ITER: 77805 RES: 4.6608e-06
Jacobi stage: ITER: 78115 RES: 4.4455e-06
Jacobi stage: ITER: 78427 RES: 4.2375e-06
Jacobi stage: ITER: 78739 RES: 4.0392e-06
Jacobi stage: ITER: 79051 RES: 3.8502e-06
Jacobi stage: ITER: 79363 RES: 3.67e-06
Jacobi stage: ITER: 79673 RES: 3.4983e-06
Jacobi stage: ITER: 79983 RES: 3.3366e-06
Jacobi stage: ITER: 80295 RES: 3.1805e-06
Jacobi stage: ITER: 80607 RES: 3.0317e-06
Jacobi stage: ITER: 80919 RES: 2.8898e-06
Jacobi stage: ITER: 81231 RES: 2.7546e-06
Jacobi stage: ITER: 81541 RES: 2.6257e-06
Jacobi stage: ITER: 82003 RES: 2.4466e-06
Jacobi stage: ITER: 82315 RES: 2.3321e-06
Jacobi stage: ITER: 82627 RES: 2.2229e-06
Jacobi stage: ITER: 82937 RES: 2.1189e-06
Jacobi stage: ITER: 83249 RES: 2.0198e-06
Jacobi stage: ITER: 83559 RES: 1.9264e-06
Jacobi stage: ITER: 83871 RES: 1.8363e-06
Jacobi stage: ITER: 84183 RES: 1.7504e-06
Jacobi stage: ITER: 84493 RES: 1.6685e-06
Jacobi stage: ITER: 84805 RES: 1.5904e-06
Jacobi stage: ITER: 85115 RES: 1.5169e-06
Jacobi stage: ITER: 85427 RES: 1.4459e-06
Jacobi stage: ITER: 85739 RES: 1.3783e-06
Jacobi stage: ITER: 86049 RES: 1.3138e-06
Jacobi stage: ITER: 86361 RES: 1.2523e-06
Jacobi stage: ITER: 86671 RES: 1.1944e-06
Jacobi stage: ITER: 86983 RES: 1.1385e-06
Jacobi stage: ITER: 87295 RES: 1.0853e-06
Jacobi stage: ITER: 87605 RES: 1.0345e-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.892e-0
ELA: 0.10017 Jacobi stage: ITER: 39865 RES: 0.0015826
ELA: 0.20028 Jacobi stage: ITER: 80187 RES: 3.2337e-06
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.8204e-
ELA: 0.10016 Jacobi stage: ITER: 465 RES: 0.85961
ELA: 0.20027 Jacobi stage: ITER: 845 RES: 0.76978
ELA: 0.30039 Jacobi stage: ITER: 1143 RES: 0.71145
ELA: 0.40049 Jacobi stage: ITER: 1455 RES: 0.65856
ELA: 0.5006 Jacobi stage: ITER: 1755 RES: 0.61437
ELA: 0.6007 Jacobi stage: ITER: 2071 RES: 0.5735
ELA: 0.70082 Jacobi stage: ITER: 2383 RES: 0.53777
ELA: 0.80092 Jacobi stage: ITER: 2691 RES: 0.50617
ELA: 0.90103 Jacobi stage: ITER: 2997 RES: 0.47759
ELA: 1.0011 Jacobi stage: ITER: 3303 RES: 0.45185
ELA: 1.1012 Jacobi stage: ITER: 3599 RES: 0.42878
ELA: 1.2013 Jacobi stage: ITER: 3783 RES: 0.4153
ELA: 1.3014 Jacobi stage: ITER: 3965 RES: 0.40242
ELA: 1.4015 Jacobi stage: ITER: 4149 RES: 0.39009
ELA: 1.5016 Jacobi stage: ITER: 4335 RES: 0.37826
ELA: 1.6017 Jacobi stage: ITER: 4519 RES: 0.36691
ELA: 1.7019 Jacobi stage: ITER: 4707 RES: 0.35575
ELA: 1.802 Jacobi stage: ITER: 4897 RES: 0.34479
ELA: 1.9021 Jacobi stage: ITER: 5073 RES: 0.33511
ELA: 2.0022 Jacobi stage: ITER: 5257 RES: 0.32533
ELA: 2.1023 Jacobi stage: ITER: 5445 RES: 0.31569
ELA: 2.2024 Jacobi stage: ITER: 5635 RES: 0.30638
ELA: 2.3025 Jacobi stage: ITER: 5823 RES: 0.29738
ELA: 2.4026 Jacobi stage: ITER: 6121 RES: 0.28363
ELA: 2.5027 Jacobi stage: ITER: 6423 RES: 0.27058
ELA: 2.6028 Jacobi stage: ITER: 6731 RES: 0.25786
ELA: 2.7029 Jacobi stage: ITER: 7041 RES: 0.24562
ELA: 2.803 Jacobi stage: ITER: 7359 RES: 0.23385
ELA: 2.9031 Jacobi stage: ITER: 7675 RES: 0.22267
ELA: 3.0032 Jacobi stage: ITER: 7969 RES: 0.2127
ELA: 3.1033 Jacobi stage: ITER: 8277 RES: 0.20281
ELA: 3.2034 Jacobi stage: ITER: 8593 RES: 0.19316
ELA: 3.3035 Jacobi stage: ITER: 8911 RES: 0.18397
ELA: 3.4036 Jacobi stage: ITER: 9219 RES: 0.17544
ELA: 3.5037 Jacobi stage: ITER: 9507 RES: 0.16783
ELA: 3.6038 Jacobi stage: ITER: 9803 RES: 0.16036
ELA: 3.7039 Jacobi stage: ITER: 10115 RES: 0.15284
ELA: 3.804 Jacobi stage: ITER: 10431 RES: 0.14559
ELA: 3.9041 Jacobi stage: ITER: 10747 RES: 0.13868
ELA: 4.0042 Jacobi stage: ITER: 11047 RES: 0.13243
ELA: 4.1043 Jacobi stage: ITER: 11359 RES: 0.12623
ELA: 4.2045 Jacobi stage: ITER: 11675 RES: 0.12025
ELA: 4.3046 Jacobi stage: ITER: 11991 RES: 0.11455
ELA: 4.4047 Jacobi stage: ITER: 12283 RES: 0.10952
ELA: 4.5047 Jacobi stage: ITER: 12575 RES: 0.10472
ELA: 4.6048 Jacobi stage: ITER: 12877 RES: 0.099937
ELA: 4.705 Jacobi stage: ITER: 13187 RES: 0.095318
ELA: 4.8051 Jacobi stage: ITER: 13503 RES: 0.090801
ELA: 4.9052 Jacobi stage: ITER: 13815 RES: 0.086552
ELA: 5.0053 Jacobi stage: ITER: 14125 RES: 0.082501
ELA: 5.1054 Jacobi stage: ITER: 14437 RES: 0.07864
ELA: 5.2055 Jacobi stage: ITER: 14729 RES: 0.075191
ELA: 5.3093 Jacobi stage: ITER: 15047 RES: 0.071628
ELA: 5.4094 Jacobi stage: ITER: 15343 RES: 0.068444
ELA: 5.5096 Jacobi stage: ITER: 15631 RES: 0.065482
ELA: 5.6097 Jacobi stage: ITER: 15933 RES: 0.062495
ELA: 5.7098 Jacobi stage: ITER: 16519 RES: 0.057133
ELA: 5.8137 Jacobi stage: ITER: 16825 RES: 0.054493
ELA: 5.9137 Jacobi stage: ITER: 17073 RES: 0.052456
ELA: 6.0138 Jacobi stage: ITER: 17259 RES: 0.050994
ELA: 6.1156 Jacobi stage: ITER: 17519 RES: 0.048998
ELA: 6.2157 Jacobi stage: ITER: 17815 RES: 0.04682
ELA: 6.3158 Jacobi stage: ITER: 18127 RES: 0.044629
ELA: 6.416 Jacobi stage: ITER: 18443 RES: 0.042515
ELA: 6.5161 Jacobi stage: ITER: 18759 RES: 0.0405
ELA: 6.6163 Jacobi stage: ITER: 19075 RES: 0.038581
ELA: 6.7166 Jacobi stage: ITER: 19381 RES: 0.036799
ELA: 6.8202 Jacobi stage: ITER: 19679 RES: 0.035163
ELA: 6.9203 Jacobi stage: ITER: 19939 RES: 0.033786
ELA: 7.0204 Jacobi stage: ITER: 20235 RES: 0.032285
ELA: 7.1205 Jacobi stage: ITER: 20539 RES: 0.030812
ELA: 7.2206 Jacobi stage: ITER: 20845 RES: 0.029388
ELA: 7.3207 Jacobi stage: ITER: 21161 RES: 0.027996
ELA: 7.4207 Jacobi stage: ITER: 21475 RES: 0.026686
ELA: 7.5252 Jacobi stage: ITER: 21823 RES: 0.025297
ELA: 7.6253 Jacobi stage: ITER: 22149 RES: 0.024054
ELA: 7.7257 Jacobi stage: ITER: 22459 RES: 0.022942
ELA: 7.8258 Jacobi stage: ITER: 22767 RES: 0.021882
ELA: 7.9288 Jacobi stage: ITER: 23071 RES: 0.020884
ELA: 8.0289 Jacobi stage: ITER: 23361 RES: 0.019968
ELA: 8.129 Jacobi stage: ITER: 23683 RES: 0.01901
ELA: 8.2291 Jacobi stage: ITER: 23989 RES: 0.018132
ELA: 8.3292 Jacobi stage: ITER: 24295 RES: 0.017305
ELA: 8.4293 Jacobi stage: ITER: 24607 RES: 0.016495
ELA: 8.5319 Jacobi stage: ITER: 24939 RES: 0.015675
ELA: 8.632 Jacobi stage: ITER: 25241 RES: 0.01496
ELA: 8.7321 Jacobi stage: ITER: 25555 RES: 0.01426
ELA: 8.833 Jacobi stage: ITER: 25875 RES: 0.013576
ELA: 8.9336 Jacobi stage: ITER: 26175 RES: 0.012964
ELA: 9.0336 Jacobi stage: ITER: 26479 RES: 0.012373
ELA: 9.1338 Jacobi stage: ITER: 26775 RES: 0.011823
ELA: 9.2339 Jacobi stage: ITER: 27067 RES: 0.011304
ELA: 9.334 Jacobi stage: ITER: 27373 RES: 0.010782
ELA: 9.4341 Jacobi stage: ITER: 27677 RES: 0.01029
ELA: 9.5342 Jacobi stage: ITER: 27981 RES: 0.0098207
ELA: 9.6347 Jacobi stage: ITER: 28291 RES: 0.0093669
ELA: 9.7348 Jacobi stage: ITER: 28593 RES: 0.0089395
ELA: 9.8349 Jacobi stage: ITER: 28909 RES: 0.008516
ELA: 9.9351 Jacobi stage: ITER: 29227 RES: 0.0081125
ELA: 10.035 Jacobi stage: ITER: 29539 RES: 0.0077329
ELA: 10.136 Jacobi stage: ITER: 29841 RES: 0.0073801
ELA: 10.236 Jacobi stage: ITER: 30135 RES: 0.0070564
ELA: 10.336 Jacobi stage: ITER: 30463 RES: 0.0067097
ELA: 10.436 Jacobi stage: ITER: 30765 RES: 0.0064036
ELA: 10.537 Jacobi stage: ITER: 31029 RES: 0.0061491
ELA: 10.637 Jacobi stage: ITER: 31325 RES: 0.0058758
ELA: 10.737 Jacobi stage: ITER: 31637 RES: 0.0056009
ELA: 10.838 Jacobi stage: ITER: 31951 RES: 0.0053388
ELA: 10.938 Jacobi stage: ITER: 32263 RES: 0.005089
ELA: 11.038 Jacobi stage: ITER: 32575 RES: 0.0048508
ELA: 11.138 Jacobi stage: ITER: 32887 RES: 0.0046238
ELA: 11.238 Jacobi stage: ITER: 33197 RES: 0.0044075
ELA: 11.338 Jacobi stage: ITER: 33509 RES: 0.0042012
ELA: 11.438 Jacobi stage: ITER: 33819 RES: 0.0040071
ELA: 11.539 Jacobi stage: ITER: 34131 RES: 0.0038196
ELA: 11.639 Jacobi stage: ITER: 34443 RES: 0.0036409
ELA: 11.739 Jacobi stage: ITER: 34755 RES: 0.0034705
ELA: 11.839 Jacobi stage: ITER: 35067 RES: 0.0033081
ELA: 11.939 Jacobi stage: ITER: 35377 RES: 0.0031533
ELA: 12.039 Jacobi stage: ITER: 35687 RES: 0.0030076
ELA: 12.139 Jacobi stage: ITER: 35999 RES: 0.0028669
ELA: 12.24 Jacobi stage: ITER: 36311 RES: 0.0027327
ELA: 12.34 Jacobi stage: ITER: 36623 RES: 0.0026048
ELA: 12.44 Jacobi stage: ITER: 36935 RES: 0.0024829
ELA: 12.54 Jacobi stage: ITER: 37245 RES: 0.0023668
ELA: 12.64 Jacobi stage: ITER: 37557 RES: 0.002256
ELA: 12.74 Jacobi stage: ITER: 37867 RES: 0.0021518
ELA: 12.84 Jacobi stage: ITER: 38179 RES: 0.0020511
ELA: 12.94 Jacobi stage: ITER: 38491 RES: 0.0019551
ELA: 13.041 Jacobi stage: ITER: 38803 RES: 0.0018636
ELA: 13.141 Jacobi stage: ITER: 39113 RES: 0.0017764
ELA: 13.241 Jacobi stage: ITER: 39425 RES: 0.0016933
ELA: 13.341 Jacobi stage: ITER: 39735 RES: 0.001615
ELA: 13.441 Jacobi stage: ITER: 40047 RES: 0.0015395
ELA: 13.541 Jacobi stage: ITER: 40359 RES: 0.0014674
ELA: 13.641 Jacobi stage: ITER: 40671 RES: 0.0013988
ELA: 13.741 Jacobi stage: ITER: 40983 RES: 0.0013333
ELA: 13.842 Jacobi stage: ITER: 41293 RES: 0.0012709
ELA: 13.942 Jacobi stage: ITER: 41605 RES: 0.0012115
ELA: 14.042 Jacobi stage: ITER: 41915 RES: 0.0011555
ELA: 14.142 Jacobi stage: ITER: 42227 RES: 0.0011014
ELA: 14.242 Jacobi stage: ITER: 42539 RES: 0.0010499
ELA: 14.342 Jacobi stage: ITER: 42851 RES: 0.0010007
ELA: 14.442 Jacobi stage: ITER: 43163 RES: 0.00095391
ELA: 14.543 Jacobi stage: ITER: 43473 RES: 0.00090927
ELA: 14.643 Jacobi stage: ITER: 43785 RES: 0.00086673
ELA: 14.743 Jacobi stage: ITER: 44095 RES: 0.00082668
ELA: 14.843 Jacobi stage: ITER: 44407 RES: 0.00078799
ELA: 14.943 Jacobi stage: ITER: 44719 RES: 0.00075112
ELA: 15.043 Jacobi stage: ITER: 45031 RES: 0.00071597
ELA: 15.143 Jacobi stage: ITER: 45341 RES: 0.00068247
ELA: 15.243 Jacobi stage: ITER: 45653 RES: 0.00065053
ELA: 15.344 Jacobi stage: ITER: 45963 RES: 0.00062009
ELA: 15.444 Jacobi stage: ITER: 46275 RES: 0.00059144
ELA: 15.544 Jacobi stage: ITER: 46587 RES: 0.00056377
ELA: 15.644 Jacobi stage: ITER: 46899 RES: 0.00053738
ELA: 15.744 Jacobi stage: ITER: 47211 RES: 0.00051224
ELA: 15.844 Jacobi stage: ITER: 47521 RES: 0.00048827
ELA: 15.944 Jacobi stage: ITER: 47833 RES: 0.00046542
ELA: 16.044 Jacobi stage: ITER: 48143 RES: 0.00044392
ELA: 16.145 Jacobi stage: ITER: 48455 RES: 0.00042314
ELA: 16.245 Jacobi stage: ITER: 48767 RES: 0.00040334
ELA: 16.345 Jacobi stage: ITER: 49079 RES: 0.00038447
ELA: 16.445 Jacobi stage: ITER: 49389 RES: 0.00036648
ELA: 16.545 Jacobi stage: ITER: 49701 RES: 0.00034933
ELA: 16.645 Jacobi stage: ITER: 50011 RES: 0.00033319
ELA: 16.745 Jacobi stage: ITER: 50323 RES: 0.0003176
ELA: 16.846 Jacobi stage: ITER: 50635 RES: 0.00030274
ELA: 16.946 Jacobi stage: ITER: 50947 RES: 0.00028857
ELA: 17.046 Jacobi stage: ITER: 51259 RES: 0.00027507
ELA: 17.146 Jacobi stage: ITER: 51569 RES: 0.00026219
ELA: 17.246 Jacobi stage: ITER: 51881 RES: 0.00024993
ELA: 17.346 Jacobi stage: ITER: 52191 RES: 0.00023838
ELA: 17.446 Jacobi stage: ITER: 52503 RES: 0.00022722
ELA: 17.546 Jacobi stage: ITER: 52815 RES: 0.00021659
ELA: 17.647 Jacobi stage: ITER: 53127 RES: 0.00020646
ELA: 17.747 Jacobi stage: ITER: 53437 RES: 0.00019679
ELA: 17.847 Jacobi stage: ITER: 53749 RES: 0.00018759
ELA: 17.947 Jacobi stage: ITER: 54061 RES: 0.00017881
ELA: 18.047 Jacobi stage: ITER: 54371 RES: 0.00017055
ELA: 18.147 Jacobi stage: ITER: 54683 RES: 0.00016257
ELA: 18.247 Jacobi stage: ITER: 54995 RES: 0.00015496
ELA: 18.347 Jacobi stage: ITER: 55307 RES: 0.00014771
ELA: 18.448 Jacobi stage: ITER: 55617 RES: 0.0001408
ELA: 18.548 Jacobi stage: ITER: 55929 RES: 0.00013421
ELA: 18.648 Jacobi stage: ITER: 56239 RES: 0.00012801
ELA: 18.748 Jacobi stage: ITER: 56549 RES: 0.00012202
ELA: 18.848 Jacobi stage: ITER: 56861 RES: 0.00011631
ELA: 18.948 Jacobi stage: ITER: 57171 RES: 0.00011093
ELA: 19.048 Jacobi stage: ITER: 57483 RES: 0.00010574
ELA: 19.148 Jacobi stage: ITER: 57795 RES: 0.00010079
ELA: 19.249 Jacobi stage: ITER: 58107 RES: 9.6077e-05
ELA: 19.349 Jacobi stage: ITER: 58419 RES: 9.1581e-05
ELA: 19.449 Jacobi stage: ITER: 58729 RES: 8.7296e-05
ELA: 19.549 Jacobi stage: ITER: 59041 RES: 8.3211e-05
ELA: 19.649 Jacobi stage: ITER: 59351 RES: 7.9366e-05
ELA: 19.749 Jacobi stage: ITER: 59663 RES: 7.5652e-05
ELA: 19.849 Jacobi stage: ITER: 59975 RES: 7.2112e-05
ELA: 19.95 Jacobi stage: ITER: 60287 RES: 6.8738e-05
ELA: 20.05 Jacobi stage: ITER: 60597 RES: 6.5521e-05
ELA: 20.15 Jacobi stage: ITER: 60909 RES: 6.2455e-05
ELA: 20.25 Jacobi stage: ITER: 61219 RES: 5.9569e-05
ELA: 20.35 Jacobi stage: ITER: 61531 RES: 5.6782e-05
ELA: 20.45 Jacobi stage: ITER: 61843 RES: 5.4125e-05
ELA: 20.55 Jacobi stage: ITER: 62155 RES: 5.1592e-05
ELA: 20.651 Jacobi stage: ITER: 62467 RES: 4.9178e-05
ELA: 20.751 Jacobi stage: ITER: 62777 RES: 4.6877e-05
ELA: 20.851 Jacobi stage: ITER: 63089 RES: 4.4683e-05
ELA: 20.951 Jacobi stage: ITER: 63399 RES: 4.2618e-05
ELA: 21.051 Jacobi stage: ITER: 63711 RES: 4.0624e-05
ELA: 21.151 Jacobi stage: ITER: 64023 RES: 3.8723e-05
ELA: 21.251 Jacobi stage: ITER: 64335 RES: 3.6911e-05
ELA: 21.351 Jacobi stage: ITER: 64647 RES: 3.5184e-05
ELA: 21.452 Jacobi stage: ITER: 64957 RES: 3.3538e-05
ELA: 21.552 Jacobi stage: ITER: 65269 RES: 3.1968e-05
ELA: 21.652 Jacobi stage: ITER: 65579 RES: 3.0491e-05
ELA: 21.752 Jacobi stage: ITER: 65891 RES: 2.9064e-05
ELA: 21.852 Jacobi stage: ITER: 66203 RES: 2.7704e-05
ELA: 21.952 Jacobi stage: ITER: 66515 RES: 2.6408e-05
ELA: 22.052 Jacobi stage: ITER: 66827 RES: 2.5172e-05
ELA: 22.153 Jacobi stage: ITER: 67137 RES: 2.3994e-05
ELA: 22.253 Jacobi stage: ITER: 67449 RES: 2.2872e-05
ELA: 22.353 Jacobi stage: ITER: 67759 RES: 2.1815e-05
ELA: 22.453 Jacobi stage: ITER: 68071 RES: 2.0794e-05
ELA: 22.553 Jacobi stage: ITER: 68383 RES: 1.9821e-05
ELA: 22.653 Jacobi stage: ITER: 68695 RES: 1.8893e-05
ELA: 22.753 Jacobi stage: ITER: 69007 RES: 1.8009e-05
ELA: 22.854 Jacobi stage: ITER: 69317 RES: 1.7167e-05
ELA: 22.954 Jacobi stage: ITER: 69629 RES: 1.6363e-05
ELA: 23.054 Jacobi stage: ITER: 69939 RES: 1.5607e-05
ELA: 23.154 Jacobi stage: ITER: 70251 RES: 1.4877e-05
ELA: 23.254 Jacobi stage: ITER: 70563 RES: 1.4181e-05
ELA: 23.354 Jacobi stage: ITER: 70875 RES: 1.3517e-05
ELA: 23.454 Jacobi stage: ITER: 71185 RES: 1.2885e-05
ELA: 23.554 Jacobi stage: ITER: 71497 RES: 1.2282e-05
ELA: 23.655 Jacobi stage: ITER: 71809 RES: 1.1707e-05
ELA: 23.755 Jacobi stage: ITER: 72119 RES: 1.1166e-05
ELA: 23.855 Jacobi stage: ITER: 72431 RES: 1.0644e-05
ELA: 23.955 Jacobi stage: ITER: 72743 RES: 1.0146e-05
ELA: 24.055 Jacobi stage: ITER: 73055 RES: 9.6708e-06
ELA: 24.155 Jacobi stage: ITER: 73365 RES: 9.2183e-06
ELA: 24.255 Jacobi stage: ITER: 73677 RES: 8.7869e-06
ELA: 24.355 Jacobi stage: ITER: 73987 RES: 8.3809e-06
ELA: 24.455 Jacobi stage: ITER: 74299 RES: 7.9887e-06
ELA: 24.555 Jacobi stage: ITER: 74611 RES: 7.6149e-06
ELA: 24.655 Jacobi stage: ITER: 74921 RES: 7.2586e-06
ELA: 24.756 Jacobi stage: ITER: 75231 RES: 6.9232e-06
ELA: 24.856 Jacobi stage: ITER: 75543 RES: 6.5992e-06
ELA: 24.956 Jacobi stage: ITER: 75855 RES: 6.2904e-06
ELA: 25.056 Jacobi stage: ITER: 76167 RES: 5.9961e-06
ELA: 25.156 Jacobi stage: ITER: 76477 RES: 5.7155e-06
ELA: 25.256 Jacobi stage: ITER: 76787 RES: 5.4514e-06
ELA: 25.356 Jacobi stage: ITER: 77099 RES: 5.1963e-06
ELA: 25.456 Jacobi stage: ITER: 77411 RES: 4.9531e-06
ELA: 25.556 Jacobi stage: ITER: 77723 RES: 4.7214e-06
ELA: 25.656 Jacobi stage: ITER: 78033 RES: 4.5004e-06
ELA: 25.756 Jacobi stage: ITER: 78345 RES: 4.2898e-06
ELA: 25.856 Jacobi stage: ITER: 78655 RES: 4.0916e-06
ELA: 25.957 Jacobi stage: ITER: 79015 RES: 3.8715e-06
ELA: 26.057 Jacobi stage: ITER: 79487 RES: 3.6008e-06
ELA: 26.157 Jacobi stage: ITER: 79955 RES: 3.351e-06
ELA: 26.257 Jacobi stage: ITER: 80423 RES: 3.1186e-06
ELA: 26.357 Jacobi stage: ITER: 80891 RES: 2.9023e-06
ELA: 26.457 Jacobi stage: ITER: 81359 RES: 2.7009e-06
ELA: 26.557 Jacobi stage: ITER: 81829 RES: 2.5121e-06
ELA: 26.658 Jacobi stage: ITER: 82297 RES: 2.3378e-06
ELA: 26.758 Jacobi stage: ITER: 82765 RES: 2.1757e-06
ELA: 26.858 Jacobi stage: ITER: 83235 RES: 2.0247e-06
ELA: 26.958 Jacobi stage: ITER: 83703 RES: 1.8843e-06
ELA: 27.058 Jacobi stage: ITER: 84183 RES: 1.7504e-06
ELA: 27.158 Jacobi stage: ITER: 84651 RES: 1.629e-06
ELA: 27.258 Jacobi stage: ITER: 85119 RES: 1.516e-06
ELA: 27.359 Jacobi stage: ITER: 85587 RES: 1.4108e-06
ELA: 27.459 Jacobi stage: ITER: 86057 RES: 1.3122e-06
ELA: 27.559 Jacobi stage: ITER: 86525 RES: 1.2211e-06
ELA: 27.659 Jacobi stage: ITER: 86993 RES: 1.1364e-06
ELA: 27.759 Jacobi stage: ITER: 87463 RES: 1.0576e-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