Template Numerical Library version\ main:8f8c3bb
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__
Definition Macros.h:49
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: 31477 RES: 0.0057402
Jacobi stage: ITER: 65419 RES: 3.1231e-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: 4587 RES: 0.36282
Jacobi stage: ITER: 10843 RES: 0.13665
Jacobi stage: ITER: 17215 RES: 0.05134
Jacobi stage: ITER: 23157 RES: 0.020604
Jacobi stage: ITER: 26367 RES: 0.012588
Jacobi stage: ITER: 26745 RES: 0.011874
Jacobi stage: ITER: 27039 RES: 0.011353
Jacobi stage: ITER: 27291 RES: 0.010922
Jacobi stage: ITER: 27543 RES: 0.010507
Jacobi stage: ITER: 27795 RES: 0.010108
Jacobi stage: ITER: 28047 RES: 0.0097246
Jacobi stage: ITER: 28299 RES: 0.0093554
Jacobi stage: ITER: 28551 RES: 0.0090002
Jacobi stage: ITER: 28803 RES: 0.0086584
Jacobi stage: ITER: 29055 RES: 0.0083297
Jacobi stage: ITER: 29307 RES: 0.0080134
Jacobi stage: ITER: 29563 RES: 0.0077044
Jacobi stage: ITER: 29817 RES: 0.0074074
Jacobi stage: ITER: 30019 RES: 0.0071833
Jacobi stage: ITER: 30207 RES: 0.0069788
Jacobi stage: ITER: 30359 RES: 0.0068178
Jacobi stage: ITER: 30509 RES: 0.0066604
Jacobi stage: ITER: 30659 RES: 0.0065107
Jacobi stage: ITER: 30811 RES: 0.0063605
Jacobi stage: ITER: 30943 RES: 0.0062328
Jacobi stage: ITER: 31095 RES: 0.006089
Jacobi stage: ITER: 31247 RES: 0.0059485
Jacobi stage: ITER: 31375 RES: 0.0058326
Jacobi stage: ITER: 31527 RES: 0.005698
Jacobi stage: ITER: 31679 RES: 0.0055666
Jacobi stage: ITER: 31811 RES: 0.0054548
Jacobi stage: ITER: 31963 RES: 0.0053289
Jacobi stage: ITER: 32095 RES: 0.005222
Jacobi stage: ITER: 32245 RES: 0.0051015
Jacobi stage: ITER: 32425 RES: 0.0049624
Jacobi stage: ITER: 32677 RES: 0.004774
Jacobi stage: ITER: 32927 RES: 0.0045955
Jacobi stage: ITER: 33177 RES: 0.004421
Jacobi stage: ITER: 33433 RES: 0.0042506
Jacobi stage: ITER: 33685 RES: 0.0040892
Jacobi stage: ITER: 33883 RES: 0.0039679
Jacobi stage: ITER: 34071 RES: 0.003855
Jacobi stage: ITER: 34325 RES: 0.0037063
Jacobi stage: ITER: 34535 RES: 0.0035898
Jacobi stage: ITER: 34789 RES: 0.0034514
Jacobi stage: ITER: 35043 RES: 0.0033203
Jacobi stage: ITER: 35299 RES: 0.0031923
Jacobi stage: ITER: 35495 RES: 0.0030976
Jacobi stage: ITER: 35747 RES: 0.00298
Jacobi stage: ITER: 35965 RES: 0.002881
Jacobi stage: ITER: 36181 RES: 0.002787
Jacobi stage: ITER: 36427 RES: 0.0026844
Jacobi stage: ITER: 36683 RES: 0.0025809
Jacobi stage: ITER: 36923 RES: 0.0024875
Jacobi stage: ITER: 37127 RES: 0.0024108
Jacobi stage: ITER: 37369 RES: 0.0023221
Jacobi stage: ITER: 37595 RES: 0.0022436
Jacobi stage: ITER: 37811 RES: 0.0021704
Jacobi stage: ITER: 38061 RES: 0.002088
Jacobi stage: ITER: 38317 RES: 0.0020074
Jacobi stage: ITER: 38571 RES: 0.0019312
Jacobi stage: ITER: 38791 RES: 0.0018671
Jacobi stage: ITER: 39009 RES: 0.001805
Jacobi stage: ITER: 39255 RES: 0.0017386
Jacobi stage: ITER: 39511 RES: 0.0016716
Jacobi stage: ITER: 39701 RES: 0.001623
Jacobi stage: ITER: 39907 RES: 0.0015729
Jacobi stage: ITER: 40155 RES: 0.0015141
Jacobi stage: ITER: 40411 RES: 0.0014558
Jacobi stage: ITER: 40665 RES: 0.0013996
Jacobi stage: ITER: 40919 RES: 0.0013465
Jacobi stage: ITER: 41123 RES: 0.0013049
Jacobi stage: ITER: 41375 RES: 0.0012554
Jacobi stage: ITER: 41629 RES: 0.001207
Jacobi stage: ITER: 41883 RES: 0.0011612
Jacobi stage: ITER: 42137 RES: 0.0011164
Jacobi stage: ITER: 42395 RES: 0.0010733
Jacobi stage: ITER: 42619 RES: 0.001037
Jacobi stage: ITER: 42823 RES: 0.0010051
Jacobi stage: ITER: 42955 RES: 0.00098488
Jacobi stage: ITER: 43185 RES: 0.0009504
Jacobi stage: ITER: 43427 RES: 0.000916
Jacobi stage: ITER: 43683 RES: 0.00088068
Jacobi stage: ITER: 43939 RES: 0.00084672
Jacobi stage: ITER: 44191 RES: 0.00081458
Jacobi stage: ITER: 44415 RES: 0.00078703
Jacobi stage: ITER: 44595 RES: 0.00076556
Jacobi stage: ITER: 44815 RES: 0.00074013
Jacobi stage: ITER: 45053 RES: 0.00071334
Jacobi stage: ITER: 45307 RES: 0.00068625
Jacobi stage: ITER: 45563 RES: 0.00065979
Jacobi stage: ITER: 45787 RES: 0.00063748
Jacobi stage: ITER: 45995 RES: 0.00061743
Jacobi stage: ITER: 46217 RES: 0.00059655
Jacobi stage: ITER: 46463 RES: 0.00057461
Jacobi stage: ITER: 46719 RES: 0.00055245
Jacobi stage: ITER: 46949 RES: 0.00053311
Jacobi stage: ITER: 47197 RES: 0.00051318
Jacobi stage: ITER: 47423 RES: 0.00049583
Jacobi stage: ITER: 47633 RES: 0.00047994
Jacobi stage: ITER: 47883 RES: 0.000462
Jacobi stage: ITER: 48137 RES: 0.00044419
Jacobi stage: ITER: 48365 RES: 0.0004289
Jacobi stage: ITER: 48615 RES: 0.00041287
Jacobi stage: ITER: 48847 RES: 0.00039842
Jacobi stage: ITER: 49059 RES: 0.00038565
Jacobi stage: ITER: 49311 RES: 0.00037101
Jacobi stage: ITER: 49565 RES: 0.0003567
Jacobi stage: ITER: 49789 RES: 0.00034464
Jacobi stage: ITER: 50039 RES: 0.00033176
Jacobi stage: ITER: 50237 RES: 0.00032172
Jacobi stage: ITER: 50471 RES: 0.00031046
Jacobi stage: ITER: 50725 RES: 0.00029849
Jacobi stage: ITER: 50979 RES: 0.00028715
Jacobi stage: ITER: 51205 RES: 0.00027727
Jacobi stage: ITER: 51457 RES: 0.00026674
Jacobi stage: ITER: 51643 RES: 0.00025931
Jacobi stage: ITER: 51887 RES: 0.00024977
Jacobi stage: ITER: 52141 RES: 0.00024014
Jacobi stage: ITER: 52371 RES: 0.00023188
Jacobi stage: ITER: 52619 RES: 0.00022321
Jacobi stage: ITER: 52865 RES: 0.00021487
Jacobi stage: ITER: 53041 RES: 0.00020914
Jacobi stage: ITER: 53295 RES: 0.0002012
Jacobi stage: ITER: 53547 RES: 0.00019356
Jacobi stage: ITER: 53799 RES: 0.00018621
Jacobi stage: ITER: 54051 RES: 0.00017914
Jacobi stage: ITER: 54303 RES: 0.00017234
Jacobi stage: ITER: 54555 RES: 0.00016579
Jacobi stage: ITER: 54807 RES: 0.0001595
Jacobi stage: ITER: 55059 RES: 0.00015344
Jacobi stage: ITER: 55311 RES: 0.00014762
Jacobi stage: ITER: 55563 RES: 0.00014201
Jacobi stage: ITER: 55817 RES: 0.00013654
Jacobi stage: ITER: 56069 RES: 0.00013135
Jacobi stage: ITER: 56321 RES: 0.00012636
Jacobi stage: ITER: 56573 RES: 0.00012157
Jacobi stage: ITER: 56825 RES: 0.00011695
Jacobi stage: ITER: 57077 RES: 0.00011251
Jacobi stage: ITER: 57329 RES: 0.00010824
Jacobi stage: ITER: 57581 RES: 0.00010413
Jacobi stage: ITER: 57831 RES: 0.00010024
Jacobi stage: ITER: 58083 RES: 9.6432e-05
Jacobi stage: ITER: 58335 RES: 9.277e-05
Jacobi stage: ITER: 58587 RES: 8.9248e-05
Jacobi stage: ITER: 58839 RES: 8.5859e-05
Jacobi stage: ITER: 59091 RES: 8.2599e-05
Jacobi stage: ITER: 59343 RES: 7.9463e-05
Jacobi stage: ITER: 59595 RES: 7.6446e-05
Jacobi stage: ITER: 59847 RES: 7.3544e-05
Jacobi stage: ITER: 60099 RES: 7.0751e-05
Jacobi stage: ITER: 60351 RES: 6.8065e-05
Jacobi stage: ITER: 60603 RES: 6.5481e-05
Jacobi stage: ITER: 60855 RES: 6.2995e-05
Jacobi stage: ITER: 61107 RES: 6.0603e-05
Jacobi stage: ITER: 61359 RES: 5.8302e-05
Jacobi stage: ITER: 61611 RES: 5.6088e-05
Jacobi stage: ITER: 61863 RES: 5.3959e-05
Jacobi stage: ITER: 62115 RES: 5.191e-05
Jacobi stage: ITER: 62367 RES: 4.9939e-05
Jacobi stage: ITER: 62619 RES: 4.8043e-05
Jacobi stage: ITER: 62871 RES: 4.6219e-05
Jacobi stage: ITER: 63123 RES: 4.4464e-05
Jacobi stage: ITER: 63375 RES: 4.2776e-05
Jacobi stage: ITER: 63627 RES: 4.1152e-05
Jacobi stage: ITER: 63879 RES: 3.9589e-05
Jacobi stage: ITER: 64131 RES: 3.8086e-05
Jacobi stage: ITER: 64383 RES: 3.664e-05
Jacobi stage: ITER: 64635 RES: 3.5249e-05
Jacobi stage: ITER: 64889 RES: 3.389e-05
Jacobi stage: ITER: 65141 RES: 3.2603e-05
Jacobi stage: ITER: 65393 RES: 3.1365e-05
Jacobi stage: ITER: 65645 RES: 3.0174e-05
Jacobi stage: ITER: 65897 RES: 2.9029e-05
Jacobi stage: ITER: 66149 RES: 2.7926e-05
Jacobi stage: ITER: 66401 RES: 2.6866e-05
Jacobi stage: ITER: 66653 RES: 2.5846e-05
Jacobi stage: ITER: 66905 RES: 2.4865e-05
Jacobi stage: ITER: 67157 RES: 2.3921e-05
Jacobi stage: ITER: 67409 RES: 2.3013e-05
Jacobi stage: ITER: 67661 RES: 2.2139e-05
Jacobi stage: ITER: 67913 RES: 2.1298e-05
Jacobi stage: ITER: 68165 RES: 2.049e-05
Jacobi stage: ITER: 68417 RES: 1.9712e-05
Jacobi stage: ITER: 68669 RES: 1.8963e-05
Jacobi stage: ITER: 68921 RES: 1.8243e-05
Jacobi stage: ITER: 69173 RES: 1.7551e-05
Jacobi stage: ITER: 69425 RES: 1.6884e-05
Jacobi stage: ITER: 69677 RES: 1.6243e-05
Jacobi stage: ITER: 69931 RES: 1.5626e-05
Jacobi stage: ITER: 70183 RES: 1.5033e-05
Jacobi stage: ITER: 70435 RES: 1.4462e-05
Jacobi stage: ITER: 70687 RES: 1.3913e-05
Jacobi stage: ITER: 70939 RES: 1.3385e-05
Jacobi stage: ITER: 71191 RES: 1.2877e-05
Jacobi stage: ITER: 71443 RES: 1.2388e-05
Jacobi stage: ITER: 71695 RES: 1.1918e-05
Jacobi stage: ITER: 71947 RES: 1.1465e-05
Jacobi stage: ITER: 72199 RES: 1.103e-05
Jacobi stage: ITER: 72451 RES: 1.0611e-05
Jacobi stage: ITER: 72703 RES: 1.0208e-05
Jacobi stage: ITER: 72955 RES: 9.8205e-06
Jacobi stage: ITER: 73207 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: 74971 RES: 7.2052e-06
Jacobi stage: ITER: 75223 RES: 6.9317e-06
Jacobi stage: ITER: 75475 RES: 6.6685e-06
Jacobi stage: ITER: 75727 RES: 6.4153e-06
Jacobi stage: ITER: 75979 RES: 6.1717e-06
Jacobi stage: ITER: 76231 RES: 5.9374e-06
Jacobi stage: ITER: 76483 RES: 5.712e-06
Jacobi stage: ITER: 76735 RES: 5.4951e-06
Jacobi stage: ITER: 76989 RES: 5.2832e-06
Jacobi stage: ITER: 77239 RES: 5.0857e-06
Jacobi stage: ITER: 77487 RES: 4.8957e-06
Jacobi stage: ITER: 77739 RES: 4.7098e-06
Jacobi stage: ITER: 77989 RES: 4.531e-06
Jacobi stage: ITER: 78239 RES: 4.3616e-06
Jacobi stage: ITER: 78491 RES: 4.196e-06
Jacobi stage: ITER: 78739 RES: 4.0392e-06
Jacobi stage: ITER: 78991 RES: 3.8858e-06
Jacobi stage: ITER: 79241 RES: 3.7383e-06
Jacobi stage: ITER: 79491 RES: 3.5985e-06
Jacobi stage: ITER: 79743 RES: 3.4619e-06
Jacobi stage: ITER: 79991 RES: 3.3325e-06
Jacobi stage: ITER: 80243 RES: 3.206e-06
Jacobi stage: ITER: 80493 RES: 3.0843e-06
Jacobi stage: ITER: 80743 RES: 2.969e-06
Jacobi stage: ITER: 80995 RES: 2.8563e-06
Jacobi stage: ITER: 81245 RES: 2.7478e-06
Jacobi stage: ITER: 81495 RES: 2.6451e-06
Jacobi stage: ITER: 81745 RES: 2.5447e-06
Jacobi stage: ITER: 81995 RES: 2.4496e-06
Jacobi stage: ITER: 82247 RES: 2.3566e-06
Jacobi stage: ITER: 82495 RES: 2.2685e-06
Jacobi stage: ITER: 82747 RES: 2.1824e-06
Jacobi stage: ITER: 82997 RES: 2.0995e-06
Jacobi stage: ITER: 83247 RES: 2.021e-06
Jacobi stage: ITER: 83499 RES: 1.9443e-06
Jacobi stage: ITER: 83747 RES: 1.8716e-06
Jacobi stage: ITER: 83999 RES: 1.8006e-06
Jacobi stage: ITER: 84249 RES: 1.7322e-06
Jacobi stage: ITER: 84499 RES: 1.6674e-06
Jacobi stage: ITER: 84751 RES: 1.6041e-06
Jacobi stage: ITER: 84999 RES: 1.5442e-06
Jacobi stage: ITER: 85251 RES: 1.4855e-06
Jacobi stage: ITER: 85501 RES: 1.4291e-06
Jacobi stage: ITER: 85751 RES: 1.3757e-06
Jacobi stage: ITER: 86003 RES: 1.3235e-06
Jacobi stage: ITER: 86251 RES: 1.274e-06
Jacobi stage: ITER: 86503 RES: 1.2257e-06
Jacobi stage: ITER: 86753 RES: 1.1791e-06
Jacobi stage: ITER: 87003 RES: 1.135e-06
Jacobi stage: ITER: 87255 RES: 1.092e-06
Jacobi stage: ITER: 87503 RES: 1.0511e-06
Jacobi stage: ITER: 87755 RES: 1.0112e-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:1.5474e-
ELA: 0.10012 Jacobi stage: ITER: 31177 RES: 0.0060109
ELA: 0.20023 Jacobi stage: ITER: 64737 RES: 3.469e-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.747e-0
ELA: 0.10012 Jacobi stage: ITER: 375 RES: 0.88443
ELA: 0.20023 Jacobi stage: ITER: 699 RES: 0.80254
ELA: 0.30033 Jacobi stage: ITER: 949 RES: 0.74826
ELA: 0.40044 Jacobi stage: ITER: 1201 RES: 0.70065
ELA: 0.50054 Jacobi stage: ITER: 1453 RES: 0.65856
ELA: 0.6006 Jacobi stage: ITER: 1705 RES: 0.62106
ELA: 0.7007 Jacobi stage: ITER: 1957 RES: 0.5874
ELA: 0.8008 Jacobi stage: ITER: 2209 RES: 0.55696
ELA: 0.90091 Jacobi stage: ITER: 2461 RES: 0.52924
ELA: 1.001 Jacobi stage: ITER: 2713 RES: 0.50385
ELA: 1.1011 Jacobi stage: ITER: 2965 RES: 0.48044
ELA: 1.2012 Jacobi stage: ITER: 3219 RES: 0.45874
ELA: 1.3014 Jacobi stage: ITER: 3475 RES: 0.43822
ELA: 1.4015 Jacobi stage: ITER: 3679 RES: 0.42284
ELA: 1.5016 Jacobi stage: ITER: 3887 RES: 0.40795
ELA: 1.6017 Jacobi stage: ITER: 4039 RES: 0.39753
ELA: 1.7018 Jacobi stage: ITER: 4189 RES: 0.38748
ELA: 1.8019 Jacobi stage: ITER: 4339 RES: 0.37801
ELA: 1.9026 Jacobi stage: ITER: 4491 RES: 0.36861
ELA: 2.0027 Jacobi stage: ITER: 4627 RES: 0.36044
ELA: 2.1036 Jacobi stage: ITER: 4777 RES: 0.35159
ELA: 2.2037 Jacobi stage: ITER: 4927 RES: 0.34323
ELA: 2.3038 Jacobi stage: ITER: 5059 RES: 0.33597
ELA: 2.4039 Jacobi stage: ITER: 5211 RES: 0.32785
ELA: 2.504 Jacobi stage: ITER: 5361 RES: 0.31996
ELA: 2.6042 Jacobi stage: ITER: 5491 RES: 0.31348
ELA: 2.7043 Jacobi stage: ITER: 5643 RES: 0.30599
ELA: 2.8044 Jacobi stage: ITER: 5779 RES: 0.29946
ELA: 2.9045 Jacobi stage: ITER: 5929 RES: 0.29235
ELA: 3.0046 Jacobi stage: ITER: 6091 RES: 0.28506
ELA: 3.1047 Jacobi stage: ITER: 6341 RES: 0.274
ELA: 3.2048 Jacobi stage: ITER: 6593 RES: 0.2634
ELA: 3.305 Jacobi stage: ITER: 6839 RES: 0.25355
ELA: 3.4051 Jacobi stage: ITER: 7095 RES: 0.24364
ELA: 3.5052 Jacobi stage: ITER: 7353 RES: 0.234
ELA: 3.6053 Jacobi stage: ITER: 7553 RES: 0.22685
ELA: 3.7054 Jacobi stage: ITER: 7737 RES: 0.22047
ELA: 3.8055 Jacobi stage: ITER: 7991 RES: 0.21204
ELA: 3.9056 Jacobi stage: ITER: 8207 RES: 0.20508
ELA: 4.0057 Jacobi stage: ITER: 8455 RES: 0.19738
ELA: 4.1058 Jacobi stage: ITER: 8711 RES: 0.18973
ELA: 4.2059 Jacobi stage: ITER: 8967 RES: 0.18239
ELA: 4.306 Jacobi stage: ITER: 9169 RES: 0.17674
ELA: 4.4062 Jacobi stage: ITER: 9417 RES: 0.17012
ELA: 4.5063 Jacobi stage: ITER: 9663 RES: 0.16385
ELA: 4.6064 Jacobi stage: ITER: 9855 RES: 0.15908
ELA: 4.7065 Jacobi stage: ITER: 10103 RES: 0.15312
ELA: 4.8066 Jacobi stage: ITER: 10361 RES: 0.14712
ELA: 4.9067 Jacobi stage: ITER: 10617 RES: 0.14144
ELA: 5.0068 Jacobi stage: ITER: 10811 RES: 0.13732
ELA: 5.1069 Jacobi stage: ITER: 11059 RES: 0.13219
ELA: 5.207 Jacobi stage: ITER: 11275 RES: 0.12787
ELA: 5.3072 Jacobi stage: ITER: 11495 RES: 0.12362
ELA: 5.4073 Jacobi stage: ITER: 11745 RES: 0.11892
ELA: 5.5074 Jacobi stage: ITER: 11999 RES: 0.11441
ELA: 5.6075 Jacobi stage: ITER: 12255 RES: 0.10999
ELA: 5.7076 Jacobi stage: ITER: 12495 RES: 0.10601
ELA: 5.8077 Jacobi stage: ITER: 12693 RES: 0.1028
ELA: 5.9079 Jacobi stage: ITER: 12941 RES: 0.098959
ELA: 6.008 Jacobi stage: ITER: 13195 RES: 0.095201
ELA: 6.1081 Jacobi stage: ITER: 13415 RES: 0.092037
ELA: 6.2082 Jacobi stage: ITER: 13599 RES: 0.089472
ELA: 6.3083 Jacobi stage: ITER: 13843 RES: 0.08618
ELA: 6.4084 Jacobi stage: ITER: 14099 RES: 0.082857
ELA: 6.5085 Jacobi stage: ITER: 14357 RES: 0.079613
ELA: 6.6086 Jacobi stage: ITER: 14611 RES: 0.07659
ELA: 6.7088 Jacobi stage: ITER: 14823 RES: 0.074136
ELA: 6.8089 Jacobi stage: ITER: 15067 RES: 0.071409
ELA: 6.909 Jacobi stage: ITER: 15321 RES: 0.068655
ELA: 7.0091 Jacobi stage: ITER: 15575 RES: 0.066048
ELA: 7.1092 Jacobi stage: ITER: 15827 RES: 0.06354
ELA: 7.2093 Jacobi stage: ITER: 16085 RES: 0.061053
ELA: 7.3094 Jacobi stage: ITER: 16311 RES: 0.058988
ELA: 7.4095 Jacobi stage: ITER: 16561 RES: 0.056748
ELA: 7.5096 Jacobi stage: ITER: 16693 RES: 0.055609
ELA: 7.6097 Jacobi stage: ITER: 16887 RES: 0.053993
ELA: 7.7098 Jacobi stage: ITER: 17129 RES: 0.052007
ELA: 7.81 Jacobi stage: ITER: 17383 RES: 0.050032
ELA: 7.9101 Jacobi stage: ITER: 17639 RES: 0.048103
ELA: 8.0102 Jacobi stage: ITER: 17893 RES: 0.046248
ELA: 8.1103 Jacobi stage: ITER: 18115 RES: 0.044711
ELA: 8.2104 Jacobi stage: ITER: 18317 RES: 0.043332
ELA: 8.3105 Jacobi stage: ITER: 18531 RES: 0.041944
ELA: 8.4106 Jacobi stage: ITER: 18759 RES: 0.0405
ELA: 8.5107 Jacobi stage: ITER: 19013 RES: 0.038939
ELA: 8.6108 Jacobi stage: ITER: 19267 RES: 0.03746
ELA: 8.711 Jacobi stage: ITER: 19493 RES: 0.036171
ELA: 8.8111 Jacobi stage: ITER: 19719 RES: 0.034948
ELA: 8.9112 Jacobi stage: ITER: 19931 RES: 0.033828
ELA: 9.0113 Jacobi stage: ITER: 20175 RES: 0.032584
ELA: 9.1114 Jacobi stage: ITER: 20427 RES: 0.031346
ELA: 9.2115 Jacobi stage: ITER: 20661 RES: 0.030231
ELA: 9.3117 Jacobi stage: ITER: 20909 RES: 0.029101
ELA: 9.4118 Jacobi stage: ITER: 21135 RES: 0.028116
ELA: 9.5119 Jacobi stage: ITER: 21349 RES: 0.027199
ELA: 9.612 Jacobi stage: ITER: 21597 RES: 0.026182
ELA: 9.7121 Jacobi stage: ITER: 21851 RES: 0.025188
ELA: 9.8122 Jacobi stage: ITER: 22081 RES: 0.024306
ELA: 9.9123 Jacobi stage: ITER: 22323 RES: 0.023427
ELA: 10.012 Jacobi stage: ITER: 22555 RES: 0.022606
ELA: 10.113 Jacobi stage: ITER: 22767 RES: 0.021882
ELA: 10.213 Jacobi stage: ITER: 23019 RES: 0.021051
ELA: 10.313 Jacobi stage: ITER: 23273 RES: 0.02024
ELA: 10.413 Jacobi stage: ITER: 23499 RES: 0.019555
ELA: 10.513 Jacobi stage: ITER: 23749 RES: 0.018813
ELA: 10.613 Jacobi stage: ITER: 23955 RES: 0.018232
ELA: 10.713 Jacobi stage: ITER: 24183 RES: 0.017605
ELA: 10.813 Jacobi stage: ITER: 24439 RES: 0.016926
ELA: 10.913 Jacobi stage: ITER: 24693 RES: 0.016273
ELA: 11.013 Jacobi stage: ITER: 24919 RES: 0.015723
ELA: 11.114 Jacobi stage: ITER: 25171 RES: 0.015126
ELA: 11.214 Jacobi stage: ITER: 25363 RES: 0.014686
ELA: 11.314 Jacobi stage: ITER: 25605 RES: 0.014146
ELA: 11.414 Jacobi stage: ITER: 25859 RES: 0.013609
ELA: 11.514 Jacobi stage: ITER: 26091 RES: 0.013133
ELA: 11.614 Jacobi stage: ITER: 26337 RES: 0.012642
ELA: 11.714 Jacobi stage: ITER: 26595 RES: 0.012154
ELA: 11.814 Jacobi stage: ITER: 26763 RES: 0.011845
ELA: 11.914 Jacobi stage: ITER: 27015 RES: 0.011395
ELA: 12.015 Jacobi stage: ITER: 27267 RES: 0.010962
ELA: 12.115 Jacobi stage: ITER: 27519 RES: 0.010546
ELA: 12.215 Jacobi stage: ITER: 27771 RES: 0.010146
ELA: 12.315 Jacobi stage: ITER: 28023 RES: 0.0097605
ELA: 12.415 Jacobi stage: ITER: 28275 RES: 0.0093899
ELA: 12.515 Jacobi stage: ITER: 28527 RES: 0.0090334
ELA: 12.615 Jacobi stage: ITER: 28781 RES: 0.0086851
ELA: 12.715 Jacobi stage: ITER: 29033 RES: 0.0083553
ELA: 12.816 Jacobi stage: ITER: 29285 RES: 0.0080381
ELA: 12.916 Jacobi stage: ITER: 29537 RES: 0.0077329
ELA: 13.016 Jacobi stage: ITER: 29789 RES: 0.0074393
ELA: 13.116 Jacobi stage: ITER: 30041 RES: 0.0071568
ELA: 13.216 Jacobi stage: ITER: 30293 RES: 0.0068851
ELA: 13.316 Jacobi stage: ITER: 30545 RES: 0.0066237
ELA: 13.416 Jacobi stage: ITER: 30797 RES: 0.0063722
ELA: 13.516 Jacobi stage: ITER: 31049 RES: 0.0061303
ELA: 13.616 Jacobi stage: ITER: 31301 RES: 0.0058975
ELA: 13.717 Jacobi stage: ITER: 31553 RES: 0.0056736
ELA: 13.817 Jacobi stage: ITER: 31805 RES: 0.0054582
ELA: 13.917 Jacobi stage: ITER: 32057 RES: 0.0052509
ELA: 14.017 Jacobi stage: ITER: 32307 RES: 0.0050547
ELA: 14.117 Jacobi stage: ITER: 32559 RES: 0.0048628
ELA: 14.217 Jacobi stage: ITER: 32811 RES: 0.0046781
ELA: 14.317 Jacobi stage: ITER: 33063 RES: 0.0045005
ELA: 14.417 Jacobi stage: ITER: 33315 RES: 0.0043296
ELA: 14.518 Jacobi stage: ITER: 33567 RES: 0.0041652
ELA: 14.618 Jacobi stage: ITER: 33821 RES: 0.0040046
ELA: 14.718 Jacobi stage: ITER: 34073 RES: 0.0038526
ELA: 14.818 Jacobi stage: ITER: 34325 RES: 0.0037063
ELA: 14.918 Jacobi stage: ITER: 34577 RES: 0.0035656
ELA: 15.018 Jacobi stage: ITER: 34829 RES: 0.0034302
ELA: 15.118 Jacobi stage: ITER: 35081 RES: 0.0033
ELA: 15.218 Jacobi stage: ITER: 35333 RES: 0.0031747
ELA: 15.319 Jacobi stage: ITER: 35585 RES: 0.0030541
ELA: 15.419 Jacobi stage: ITER: 35837 RES: 0.0029382
ELA: 15.519 Jacobi stage: ITER: 36089 RES: 0.0028266
ELA: 15.619 Jacobi stage: ITER: 36343 RES: 0.0027193
ELA: 15.719 Jacobi stage: ITER: 36595 RES: 0.0026161
ELA: 15.819 Jacobi stage: ITER: 36847 RES: 0.0025167
ELA: 15.92 Jacobi stage: ITER: 37099 RES: 0.0024212
ELA: 16.02 Jacobi stage: ITER: 37351 RES: 0.0023293
ELA: 16.12 Jacobi stage: ITER: 37603 RES: 0.0022408
ELA: 16.22 Jacobi stage: ITER: 37855 RES: 0.0021557
ELA: 16.32 Jacobi stage: ITER: 38107 RES: 0.0020739
ELA: 16.42 Jacobi stage: ITER: 38359 RES: 0.0019951
ELA: 16.521 Jacobi stage: ITER: 38611 RES: 0.0019194
ELA: 16.621 Jacobi stage: ITER: 38863 RES: 0.0018465
ELA: 16.721 Jacobi stage: ITER: 39115 RES: 0.0017764
ELA: 16.821 Jacobi stage: ITER: 39367 RES: 0.001709
ELA: 16.921 Jacobi stage: ITER: 39621 RES: 0.0016431
ELA: 17.021 Jacobi stage: ITER: 39873 RES: 0.0015807
ELA: 17.122 Jacobi stage: ITER: 40125 RES: 0.0015207
ELA: 17.222 Jacobi stage: ITER: 40377 RES: 0.0014629
ELA: 17.322 Jacobi stage: ITER: 40629 RES: 0.0014074
ELA: 17.422 Jacobi stage: ITER: 40881 RES: 0.001354
ELA: 17.522 Jacobi stage: ITER: 41133 RES: 0.0013025
ELA: 17.622 Jacobi stage: ITER: 41387 RES: 0.0012531
ELA: 17.723 Jacobi stage: ITER: 41639 RES: 0.0012055
ELA: 17.823 Jacobi stage: ITER: 41891 RES: 0.0011597
ELA: 17.923 Jacobi stage: ITER: 42143 RES: 0.0011157
ELA: 18.023 Jacobi stage: ITER: 42395 RES: 0.0010733
ELA: 18.123 Jacobi stage: ITER: 42647 RES: 0.0010326
ELA: 18.223 Jacobi stage: ITER: 42899 RES: 0.00099339
ELA: 18.324 Jacobi stage: ITER: 43151 RES: 0.00095567
ELA: 18.424 Jacobi stage: ITER: 43403 RES: 0.00091939
ELA: 18.524 Jacobi stage: ITER: 43655 RES: 0.00088448
ELA: 18.624 Jacobi stage: ITER: 43907 RES: 0.0008509
ELA: 18.724 Jacobi stage: ITER: 44159 RES: 0.00081859
ELA: 18.824 Jacobi stage: ITER: 44411 RES: 0.00078751
ELA: 18.925 Jacobi stage: ITER: 44665 RES: 0.00075714
ELA: 19.025 Jacobi stage: ITER: 44917 RES: 0.0007284
ELA: 19.125 Jacobi stage: ITER: 45169 RES: 0.00070074
ELA: 19.225 Jacobi stage: ITER: 45421 RES: 0.00067413
ELA: 19.325 Jacobi stage: ITER: 45673 RES: 0.00064854
ELA: 19.425 Jacobi stage: ITER: 45925 RES: 0.00062392
ELA: 19.526 Jacobi stage: ITER: 46177 RES: 0.00060023
ELA: 19.626 Jacobi stage: ITER: 46431 RES: 0.00057744
ELA: 19.726 Jacobi stage: ITER: 46683 RES: 0.00055551
ELA: 19.826 Jacobi stage: ITER: 46935 RES: 0.00053442
ELA: 19.926 Jacobi stage: ITER: 47187 RES: 0.00051413
ELA: 20.026 Jacobi stage: ITER: 47439 RES: 0.00049461
ELA: 20.127 Jacobi stage: ITER: 47691 RES: 0.00047583
ELA: 20.227 Jacobi stage: ITER: 47943 RES: 0.00045776
ELA: 20.327 Jacobi stage: ITER: 48195 RES: 0.00044038
ELA: 20.427 Jacobi stage: ITER: 48447 RES: 0.00042366
ELA: 20.527 Jacobi stage: ITER: 48699 RES: 0.00040758
ELA: 20.627 Jacobi stage: ITER: 48951 RES: 0.0003921
ELA: 20.727 Jacobi stage: ITER: 49203 RES: 0.00037722
ELA: 20.828 Jacobi stage: ITER: 49457 RES: 0.00036267
ELA: 20.928 Jacobi stage: ITER: 49709 RES: 0.0003489
ELA: 21.028 Jacobi stage: ITER: 49961 RES: 0.00033565
ELA: 21.128 Jacobi stage: ITER: 50213 RES: 0.00032291
ELA: 21.228 Jacobi stage: ITER: 50465 RES: 0.00031065
ELA: 21.328 Jacobi stage: ITER: 50717 RES: 0.00029885
ELA: 21.428 Jacobi stage: ITER: 50967 RES: 0.00028768
ELA: 21.528 Jacobi stage: ITER: 51217 RES: 0.00027676
ELA: 21.629 Jacobi stage: ITER: 51467 RES: 0.00026642
ELA: 21.729 Jacobi stage: ITER: 51719 RES: 0.0002563
ELA: 21.829 Jacobi stage: ITER: 51967 RES: 0.00024672
ELA: 21.929 Jacobi stage: ITER: 52219 RES: 0.00023735
ELA: 22.029 Jacobi stage: ITER: 52469 RES: 0.00022834
ELA: 22.129 Jacobi stage: ITER: 52719 RES: 0.00021981
ELA: 22.229 Jacobi stage: ITER: 52971 RES: 0.00021146
ELA: 22.33 Jacobi stage: ITER: 53221 RES: 0.00020343
ELA: 22.43 Jacobi stage: ITER: 53471 RES: 0.00019583
ELA: 22.53 Jacobi stage: ITER: 53721 RES: 0.00018839
ELA: 22.63 Jacobi stage: ITER: 53971 RES: 0.00018135
ELA: 22.73 Jacobi stage: ITER: 54223 RES: 0.00017447
ELA: 22.83 Jacobi stage: ITER: 54473 RES: 0.00016784
ELA: 22.93 Jacobi stage: ITER: 54723 RES: 0.00016157
ELA: 23.03 Jacobi stage: ITER: 54975 RES: 0.00015543
ELA: 23.131 Jacobi stage: ITER: 55223 RES: 0.00014963
ELA: 23.231 Jacobi stage: ITER: 55475 RES: 0.00014394
ELA: 23.331 Jacobi stage: ITER: 55725 RES: 0.00013848
ELA: 23.431 Jacobi stage: ITER: 55975 RES: 0.0001333
ELA: 23.531 Jacobi stage: ITER: 56227 RES: 0.00012824
ELA: 23.631 Jacobi stage: ITER: 56475 RES: 0.00012345
ELA: 23.731 Jacobi stage: ITER: 56727 RES: 0.00011876
ELA: 23.831 Jacobi stage: ITER: 56977 RES: 0.00011425
ELA: 23.932 Jacobi stage: ITER: 57227 RES: 0.00010998
ELA: 24.032 Jacobi stage: ITER: 57479 RES: 0.00010581
ELA: 24.132 Jacobi stage: ITER: 57729 RES: 0.00010179
ELA: 24.232 Jacobi stage: ITER: 57979 RES: 9.7984e-05
ELA: 24.332 Jacobi stage: ITER: 58229 RES: 9.4264e-05
ELA: 24.432 Jacobi stage: ITER: 58479 RES: 9.0741e-05
ELA: 24.532 Jacobi stage: ITER: 58731 RES: 8.7296e-05
ELA: 24.633 Jacobi stage: ITER: 58981 RES: 8.3981e-05
ELA: 24.733 Jacobi stage: ITER: 59231 RES: 8.0842e-05
ELA: 24.833 Jacobi stage: ITER: 59481 RES: 7.7773e-05
ELA: 24.933 Jacobi stage: ITER: 59731 RES: 7.4866e-05
ELA: 25.033 Jacobi stage: ITER: 59983 RES: 7.2023e-05
ELA: 25.133 Jacobi stage: ITER: 60233 RES: 6.9289e-05
ELA: 25.233 Jacobi stage: ITER: 60483 RES: 6.6699e-05
ELA: 25.333 Jacobi stage: ITER: 60735 RES: 6.4167e-05
ELA: 25.434 Jacobi stage: ITER: 60983 RES: 6.1768e-05
ELA: 25.534 Jacobi stage: ITER: 61235 RES: 5.9423e-05
ELA: 25.634 Jacobi stage: ITER: 61485 RES: 5.7167e-05
ELA: 25.734 Jacobi stage: ITER: 61803 RES: 5.4458e-05
ELA: 25.834 Jacobi stage: ITER: 62183 RES: 5.1371e-05
ELA: 25.934 Jacobi stage: ITER: 62561 RES: 4.8458e-05
ELA: 26.035 Jacobi stage: ITER: 62939 RES: 4.5739e-05
ELA: 26.135 Jacobi stage: ITER: 63315 RES: 4.3172e-05
ELA: 26.235 Jacobi stage: ITER: 63693 RES: 4.0724e-05
ELA: 26.335 Jacobi stage: ITER: 64071 RES: 3.8439e-05
ELA: 26.435 Jacobi stage: ITER: 64449 RES: 3.6259e-05
ELA: 26.535 Jacobi stage: ITER: 64825 RES: 3.4225e-05
ELA: 26.636 Jacobi stage: ITER: 65213 RES: 3.2244e-05
ELA: 26.736 Jacobi stage: ITER: 65591 RES: 3.0435e-05
ELA: 26.836 Jacobi stage: ITER: 65967 RES: 2.8727e-05
ELA: 26.936 Jacobi stage: ITER: 66345 RES: 2.7098e-05
ELA: 27.036 Jacobi stage: ITER: 66723 RES: 2.5578e-05
ELA: 27.136 Jacobi stage: ITER: 67099 RES: 2.4142e-05
ELA: 27.237 Jacobi stage: ITER: 67477 RES: 2.2773e-05
ELA: 27.337 Jacobi stage: ITER: 67855 RES: 2.1495e-05
ELA: 27.437 Jacobi stage: ITER: 68231 RES: 2.0289e-05
ELA: 27.537 Jacobi stage: ITER: 68609 RES: 1.9139e-05
ELA: 27.637 Jacobi stage: ITER: 68987 RES: 1.8065e-05
ELA: 27.737 Jacobi stage: ITER: 69363 RES: 1.7051e-05
ELA: 27.838 Jacobi stage: ITER: 69741 RES: 1.6084e-05
ELA: 27.938 Jacobi stage: ITER: 70119 RES: 1.5182e-05
ELA: 28.038 Jacobi stage: ITER: 70495 RES: 1.433e-05
ELA: 28.138 Jacobi stage: ITER: 70873 RES: 1.3517e-05
ELA: 28.238 Jacobi stage: ITER: 71251 RES: 1.2759e-05
ELA: 28.338 Jacobi stage: ITER: 71627 RES: 1.2043e-05
ELA: 28.439 Jacobi stage: ITER: 72005 RES: 1.136e-05
ELA: 28.539 Jacobi stage: ITER: 72383 RES: 1.0722e-05
ELA: 28.639 Jacobi stage: ITER: 72759 RES: 1.0121e-05
ELA: 28.739 Jacobi stage: ITER: 73137 RES: 9.5468e-06
ELA: 28.839 Jacobi stage: ITER: 73515 RES: 9.0111e-06
ELA: 28.94 Jacobi stage: ITER: 73891 RES: 8.5054e-06
ELA: 29.04 Jacobi stage: ITER: 74269 RES: 8.0231e-06
ELA: 29.14 Jacobi stage: ITER: 74647 RES: 7.5729e-06
ELA: 29.24 Jacobi stage: ITER: 75023 RES: 7.1479e-06
ELA: 29.34 Jacobi stage: ITER: 75401 RES: 6.7427e-06
ELA: 29.44 Jacobi stage: ITER: 75787 RES: 6.3565e-06
ELA: 29.54 Jacobi stage: ITER: 76165 RES: 5.9961e-06
ELA: 29.641 Jacobi stage: ITER: 76543 RES: 5.6596e-06
ELA: 29.741 Jacobi stage: ITER: 76919 RES: 5.342e-06
ELA: 29.841 Jacobi stage: ITER: 77297 RES: 5.0391e-06
ELA: 29.941 Jacobi stage: ITER: 77675 RES: 4.7563e-06
ELA: 30.041 Jacobi stage: ITER: 78051 RES: 4.4866e-06
ELA: 30.142 Jacobi stage: ITER: 78429 RES: 4.2348e-06
ELA: 30.242 Jacobi stage: ITER: 78807 RES: 3.9972e-06
ELA: 30.342 Jacobi stage: ITER: 79183 RES: 3.7729e-06
ELA: 30.442 Jacobi stage: ITER: 79561 RES: 3.559e-06
ELA: 30.542 Jacobi stage: ITER: 79939 RES: 3.3592e-06
ELA: 30.642 Jacobi stage: ITER: 80315 RES: 3.1707e-06
ELA: 30.743 Jacobi stage: ITER: 80695 RES: 2.991e-06
ELA: 30.843 Jacobi stage: ITER: 81071 RES: 2.8231e-06
ELA: 30.943 Jacobi stage: ITER: 81449 RES: 2.663e-06
ELA: 31.043 Jacobi stage: ITER: 81827 RES: 2.5136e-06
ELA: 31.143 Jacobi stage: ITER: 82203 RES: 2.3725e-06
ELA: 31.243 Jacobi stage: ITER: 82581 RES: 2.238e-06
ELA: 31.344 Jacobi stage: ITER: 82959 RES: 2.1124e-06
ELA: 31.444 Jacobi stage: ITER: 83335 RES: 1.9939e-06
ELA: 31.544 Jacobi stage: ITER: 83713 RES: 1.8808e-06
ELA: 31.644 Jacobi stage: ITER: 84091 RES: 1.7753e-06
ELA: 31.744 Jacobi stage: ITER: 84467 RES: 1.6757e-06
ELA: 31.844 Jacobi stage: ITER: 84845 RES: 1.5807e-06
ELA: 31.945 Jacobi stage: ITER: 85223 RES: 1.492e-06
ELA: 32.045 Jacobi stage: ITER: 85599 RES: 1.4082e-06
ELA: 32.145 Jacobi stage: ITER: 85977 RES: 1.3284e-06
ELA: 32.245 Jacobi stage: ITER: 86365 RES: 1.2515e-06
ELA: 32.345 Jacobi stage: ITER: 86743 RES: 1.1813e-06
ELA: 32.445 Jacobi stage: ITER: 87119 RES: 1.115e-06
ELA: 32.546 Jacobi stage: ITER: 87497 RES: 1.0518e-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: