Template Numerical Library version\ main:c44afa0
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: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: 20939 RES: 0.028976
Jacobi stage: ITER: 42255 RES: 0.001096
Jacobi stage: ITER: 62719 RES: 4.7311e-05
Jacobi stage: ITER: 83919 RES: 1.8228e-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: 3355 RES: 0.44766
Jacobi stage: ITER: 3843 RES: 0.41104
Jacobi stage: ITER: 4211 RES: 0.38618
Jacobi stage: ITER: 4535 RES: 0.36594
Jacobi stage: ITER: 4859 RES: 0.34704
Jacobi stage: ITER: 5185 RES: 0.32912
Jacobi stage: ITER: 5511 RES: 0.31248
Jacobi stage: ITER: 5835 RES: 0.29682
Jacobi stage: ITER: 6175 RES: 0.28132
Jacobi stage: ITER: 6527 RES: 0.26621
Jacobi stage: ITER: 6893 RES: 0.25135
Jacobi stage: ITER: 7249 RES: 0.23781
Jacobi stage: ITER: 7603 RES: 0.22517
Jacobi stage: ITER: 7915 RES: 0.21455
Jacobi stage: ITER: 8089 RES: 0.20879
Jacobi stage: ITER: 8287 RES: 0.20256
Jacobi stage: ITER: 8487 RES: 0.1964
Jacobi stage: ITER: 8635 RES: 0.19197
Jacobi stage: ITER: 8779 RES: 0.18775
Jacobi stage: ITER: 8969 RES: 0.18228
Jacobi stage: ITER: 9213 RES: 0.17555
Jacobi stage: ITER: 9635 RES: 0.16456
Jacobi stage: ITER: 9935 RES: 0.15713
Jacobi stage: ITER: 10247 RES: 0.14977
Jacobi stage: ITER: 10527 RES: 0.14345
Jacobi stage: ITER: 10919 RES: 0.13506
Jacobi stage: ITER: 11283 RES: 0.12771
Jacobi stage: ITER: 11607 RES: 0.12151
Jacobi stage: ITER: 11885 RES: 0.11639
Jacobi stage: ITER: 12187 RES: 0.11115
Jacobi stage: ITER: 12433 RES: 0.10699
Jacobi stage: ITER: 12667 RES: 0.10325
Jacobi stage: ITER: 12911 RES: 0.099447
Jacobi stage: ITER: 13237 RES: 0.09456
Jacobi stage: ITER: 13555 RES: 0.090079
Jacobi stage: ITER: 13893 RES: 0.085495
Jacobi stage: ITER: 14231 RES: 0.081194
Jacobi stage: ITER: 14555 RES: 0.077251
Jacobi stage: ITER: 14887 RES: 0.073411
Jacobi stage: ITER: 15187 RES: 0.070104
Jacobi stage: ITER: 15511 RES: 0.066701
Jacobi stage: ITER: 15845 RES: 0.063345
Jacobi stage: ITER: 16177 RES: 0.060196
Jacobi stage: ITER: 16481 RES: 0.05745
Jacobi stage: ITER: 16807 RES: 0.054661
Jacobi stage: ITER: 17139 RES: 0.051943
Jacobi stage: ITER: 17463 RES: 0.049421
Jacobi stage: ITER: 17789 RES: 0.046993
Jacobi stage: ITER: 18105 RES: 0.044766
Jacobi stage: ITER: 18431 RES: 0.042593
Jacobi stage: ITER: 18733 RES: 0.04065
Jacobi stage: ITER: 19045 RES: 0.038748
Jacobi stage: ITER: 19375 RES: 0.036844
Jacobi stage: ITER: 19707 RES: 0.035012
Jacobi stage: ITER: 20023 RES: 0.033353
Jacobi stage: ITER: 20347 RES: 0.031734
Jacobi stage: ITER: 20659 RES: 0.030249
Jacobi stage: ITER: 20987 RES: 0.028763
Jacobi stage: ITER: 21289 RES: 0.027451
Jacobi stage: ITER: 21611 RES: 0.026134
Jacobi stage: ITER: 21941 RES: 0.024835
Jacobi stage: ITER: 22273 RES: 0.0236
Jacobi stage: ITER: 22591 RES: 0.022482
Jacobi stage: ITER: 22911 RES: 0.021404
Jacobi stage: ITER: 23239 RES: 0.020352
Jacobi stage: ITER: 23547 RES: 0.019411
Jacobi stage: ITER: 23871 RES: 0.018469
Jacobi stage: ITER: 24187 RES: 0.017594
Jacobi stage: ITER: 24517 RES: 0.016719
Jacobi stage: ITER: 24853 RES: 0.015878
Jacobi stage: ITER: 25163 RES: 0.015145
Jacobi stage: ITER: 25483 RES: 0.014418
Jacobi stage: ITER: 25811 RES: 0.01371
Jacobi stage: ITER: 26143 RES: 0.013028
Jacobi stage: ITER: 26467 RES: 0.012396
Jacobi stage: ITER: 26779 RES: 0.011816
Jacobi stage: ITER: 27107 RES: 0.011235
Jacobi stage: ITER: 27431 RES: 0.01069
Jacobi stage: ITER: 27761 RES: 0.010158
Jacobi stage: ITER: 28071 RES: 0.0096888
Jacobi stage: ITER: 28399 RES: 0.0092128
Jacobi stage: ITER: 28719 RES: 0.0087709
Jacobi stage: ITER: 29043 RES: 0.0083451
Jacobi stage: ITER: 29377 RES: 0.0079253
Jacobi stage: ITER: 29699 RES: 0.0075452
Jacobi stage: ITER: 30001 RES: 0.0072009
Jacobi stage: ITER: 30331 RES: 0.0068471
Jacobi stage: ITER: 30641 RES: 0.0065267
Jacobi stage: ITER: 30969 RES: 0.0062061
Jacobi stage: ITER: 31301 RES: 0.0058975
Jacobi stage: ITER: 31637 RES: 0.0056009
Jacobi stage: ITER: 31955 RES: 0.0053355
Jacobi stage: ITER: 32281 RES: 0.0050733
Jacobi stage: ITER: 32599 RES: 0.004833
Jacobi stage: ITER: 32943 RES: 0.0045842
Jacobi stage: ITER: 33301 RES: 0.0043376
Jacobi stage: ITER: 33651 RES: 0.0041119
Jacobi stage: ITER: 33971 RES: 0.0039146
Jacobi stage: ITER: 34263 RES: 0.0037429
Jacobi stage: ITER: 34593 RES: 0.0035568
Jacobi stage: ITER: 34921 RES: 0.0033821
Jacobi stage: ITER: 35249 RES: 0.0032159
Jacobi stage: ITER: 35577 RES: 0.0030579
Jacobi stage: ITER: 35905 RES: 0.0029077
Jacobi stage: ITER: 36233 RES: 0.0027648
Jacobi stage: ITER: 36559 RES: 0.0026306
Jacobi stage: ITER: 36887 RES: 0.0025013
Jacobi stage: ITER: 37215 RES: 0.0023784
Jacobi stage: ITER: 37543 RES: 0.0022616
Jacobi stage: ITER: 37871 RES: 0.0021504
Jacobi stage: ITER: 38199 RES: 0.0020448
Jacobi stage: ITER: 38527 RES: 0.0019443
Jacobi stage: ITER: 38855 RES: 0.0018488
Jacobi stage: ITER: 39183 RES: 0.001758
Jacobi stage: ITER: 39509 RES: 0.0016716
Jacobi stage: ITER: 39837 RES: 0.0015894
Jacobi stage: ITER: 40163 RES: 0.0015123
Jacobi stage: ITER: 40491 RES: 0.001438
Jacobi stage: ITER: 40819 RES: 0.0013673
Jacobi stage: ITER: 41163 RES: 0.001297
Jacobi stage: ITER: 41499 RES: 0.0012317
Jacobi stage: ITER: 41827 RES: 0.0011712
Jacobi stage: ITER: 42155 RES: 0.0011137
Jacobi stage: ITER: 42483 RES: 0.0010589
Jacobi stage: ITER: 42811 RES: 0.0010069
Jacobi stage: ITER: 43139 RES: 0.00095743
Jacobi stage: ITER: 43467 RES: 0.00091039
Jacobi stage: ITER: 43795 RES: 0.00086566
Jacobi stage: ITER: 44123 RES: 0.00082313
Jacobi stage: ITER: 44451 RES: 0.00078269
Jacobi stage: ITER: 44779 RES: 0.00074423
Jacobi stage: ITER: 45105 RES: 0.00070766
Jacobi stage: ITER: 45433 RES: 0.00067289
Jacobi stage: ITER: 45761 RES: 0.00063983
Jacobi stage: ITER: 46089 RES: 0.0006084
Jacobi stage: ITER: 46417 RES: 0.0005785
Jacobi stage: ITER: 46743 RES: 0.00055042
Jacobi stage: ITER: 47071 RES: 0.00052337
Jacobi stage: ITER: 47399 RES: 0.00049766
Jacobi stage: ITER: 47727 RES: 0.00047321
Jacobi stage: ITER: 48055 RES: 0.00044996
Jacobi stage: ITER: 48383 RES: 0.00042785
Jacobi stage: ITER: 48711 RES: 0.00040683
Jacobi stage: ITER: 49037 RES: 0.00038684
Jacobi stage: ITER: 49365 RES: 0.00036783
Jacobi stage: ITER: 49755 RES: 0.00034655
Jacobi stage: ITER: 50083 RES: 0.00032952
Jacobi stage: ITER: 50411 RES: 0.00031333
Jacobi stage: ITER: 50737 RES: 0.00029794
Jacobi stage: ITER: 51065 RES: 0.0002833
Jacobi stage: ITER: 51393 RES: 0.00026938
Jacobi stage: ITER: 51719 RES: 0.00025614
Jacobi stage: ITER: 52047 RES: 0.00024371
Jacobi stage: ITER: 52375 RES: 0.00023173
Jacobi stage: ITER: 52703 RES: 0.00022035
Jacobi stage: ITER: 53031 RES: 0.00020952
Jacobi stage: ITER: 53359 RES: 0.00019923
Jacobi stage: ITER: 53687 RES: 0.00018944
Jacobi stage: ITER: 54013 RES: 0.00018013
Jacobi stage: ITER: 54341 RES: 0.00017128
Jacobi stage: ITER: 54669 RES: 0.00016287
Jacobi stage: ITER: 54995 RES: 0.00015496
Jacobi stage: ITER: 55325 RES: 0.00014725
Jacobi stage: ITER: 55651 RES: 0.00014011
Jacobi stage: ITER: 55979 RES: 0.00013322
Jacobi stage: ITER: 56307 RES: 0.00012668
Jacobi stage: ITER: 56635 RES: 0.00012045
Jacobi stage: ITER: 56963 RES: 0.00011453
Jacobi stage: ITER: 57291 RES: 0.00010891
Jacobi stage: ITER: 57619 RES: 0.00010356
Jacobi stage: ITER: 57947 RES: 9.8467e-05
Jacobi stage: ITER: 58273 RES: 9.3629e-05
Jacobi stage: ITER: 58601 RES: 8.9029e-05
Jacobi stage: ITER: 58927 RES: 8.4707e-05
Jacobi stage: ITER: 59255 RES: 8.0545e-05
Jacobi stage: ITER: 59583 RES: 7.6587e-05
Jacobi stage: ITER: 59911 RES: 7.2824e-05
Jacobi stage: ITER: 60239 RES: 6.9246e-05
Jacobi stage: ITER: 60567 RES: 6.5844e-05
Jacobi stage: ITER: 60893 RES: 6.2609e-05
Jacobi stage: ITER: 61221 RES: 5.9533e-05
Jacobi stage: ITER: 61549 RES: 5.6608e-05
Jacobi stage: ITER: 61875 RES: 5.3859e-05
Jacobi stage: ITER: 62203 RES: 5.1213e-05
Jacobi stage: ITER: 62531 RES: 4.8697e-05
Jacobi stage: ITER: 62859 RES: 4.6304e-05
Jacobi stage: ITER: 63187 RES: 4.4029e-05
Jacobi stage: ITER: 63515 RES: 4.1866e-05
Jacobi stage: ITER: 63841 RES: 3.9809e-05
Jacobi stage: ITER: 64169 RES: 3.7853e-05
Jacobi stage: ITER: 64497 RES: 3.5993e-05
Jacobi stage: ITER: 64823 RES: 3.4246e-05
Jacobi stage: ITER: 65151 RES: 3.2563e-05
Jacobi stage: ITER: 65479 RES: 3.0963e-05
Jacobi stage: ITER: 65807 RES: 2.9442e-05
Jacobi stage: ITER: 66135 RES: 2.7995e-05
Jacobi stage: ITER: 66463 RES: 2.662e-05
Jacobi stage: ITER: 66789 RES: 2.5312e-05
Jacobi stage: ITER: 67117 RES: 2.4068e-05
Jacobi stage: ITER: 67445 RES: 2.2886e-05
Jacobi stage: ITER: 67773 RES: 2.1761e-05
Jacobi stage: ITER: 68099 RES: 2.0705e-05
Jacobi stage: ITER: 68427 RES: 1.9687e-05
Jacobi stage: ITER: 68755 RES: 1.872e-05
Jacobi stage: ITER: 69083 RES: 1.78e-05
Jacobi stage: ITER: 69411 RES: 1.6926e-05
Jacobi stage: ITER: 69739 RES: 1.6094e-05
Jacobi stage: ITER: 70065 RES: 1.5303e-05
Jacobi stage: ITER: 70393 RES: 1.4551e-05
Jacobi stage: ITER: 70721 RES: 1.3836e-05
Jacobi stage: ITER: 71047 RES: 1.3165e-05
Jacobi stage: ITER: 71375 RES: 1.2518e-05
Jacobi stage: ITER: 71703 RES: 1.1903e-05
Jacobi stage: ITER: 72031 RES: 1.1318e-05
Jacobi stage: ITER: 72359 RES: 1.0762e-05
Jacobi stage: ITER: 72687 RES: 1.0233e-05
Jacobi stage: ITER: 73015 RES: 9.7304e-06
Jacobi stage: ITER: 73341 RES: 9.2523e-06
Jacobi stage: ITER: 73669 RES: 8.7977e-06
Jacobi stage: ITER: 73995 RES: 8.3706e-06
Jacobi stage: ITER: 74323 RES: 7.9593e-06
Jacobi stage: ITER: 74651 RES: 7.5682e-06
Jacobi stage: ITER: 74979 RES: 7.1964e-06
Jacobi stage: ITER: 75307 RES: 6.8428e-06
Jacobi stage: ITER: 75633 RES: 6.5066e-06
Jacobi stage: ITER: 75961 RES: 6.1869e-06
Jacobi stage: ITER: 76289 RES: 5.8829e-06
Jacobi stage: ITER: 76615 RES: 5.5973e-06
Jacobi stage: ITER: 76943 RES: 5.3223e-06
Jacobi stage: ITER: 77271 RES: 5.0608e-06
Jacobi stage: ITER: 77599 RES: 4.8122e-06
Jacobi stage: ITER: 77927 RES: 4.5757e-06
Jacobi stage: ITER: 78255 RES: 4.3509e-06
Jacobi stage: ITER: 78581 RES: 4.1371e-06
Jacobi stage: ITER: 78909 RES: 3.9339e-06
Jacobi stage: ITER: 79235 RES: 3.7429e-06
Jacobi stage: ITER: 79563 RES: 3.559e-06
Jacobi stage: ITER: 79891 RES: 3.3841e-06
Jacobi stage: ITER: 80219 RES: 3.2178e-06
Jacobi stage: ITER: 80547 RES: 3.0597e-06
Jacobi stage: ITER: 80875 RES: 2.9094e-06
Jacobi stage: ITER: 81201 RES: 2.7664e-06
Jacobi stage: ITER: 81529 RES: 2.6305e-06
Jacobi stage: ITER: 81857 RES: 2.5013e-06
Jacobi stage: ITER: 82183 RES: 2.3798e-06
Jacobi stage: ITER: 82511 RES: 2.2629e-06
Jacobi stage: ITER: 82839 RES: 2.1517e-06
Jacobi stage: ITER: 83167 RES: 2.046e-06
Jacobi stage: ITER: 83495 RES: 1.9455e-06
Jacobi stage: ITER: 83823 RES: 1.8499e-06
Jacobi stage: ITER: 84149 RES: 1.759e-06
Jacobi stage: ITER: 84477 RES: 1.6726e-06
Jacobi stage: ITER: 84803 RES: 1.5914e-06
Jacobi stage: ITER: 85131 RES: 1.5132e-06
Jacobi stage: ITER: 85459 RES: 1.4388e-06
Jacobi stage: ITER: 85787 RES: 1.3681e-06
Jacobi stage: ITER: 86115 RES: 1.3009e-06
Jacobi stage: ITER: 86443 RES: 1.237e-06
Jacobi stage: ITER: 86771 RES: 1.1762e-06
Jacobi stage: ITER: 87097 RES: 1.1184e-06
Jacobi stage: ITER: 87425 RES: 1.0635e-06
Jacobi stage: ITER: 87753 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.602e-0
ELA: 0.10013 Jacobi stage: ITER: 19321 RES: 0.037139
ELA: 0.20027 Jacobi stage: ITER: 40639 RES: 0.0014048
ELA: 0.30038 Jacobi stage: ITER: 61907 RES: 5.3562e-05
ELA: 0.4005 Jacobi stage: ITER: 83047 RES: 2.0828e-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:3.0027e-
ELA: 0.10015 Jacobi stage: ITER: 491 RES: 0.85335
ELA: 0.20027 Jacobi stage: ITER: 895 RES: 0.7597
ELA: 0.30116 Jacobi stage: ITER: 1223 RES: 0.69712
ELA: 0.40127 Jacobi stage: ITER: 1547 RES: 0.64438
ELA: 0.50138 Jacobi stage: ITER: 1873 RES: 0.59823
ELA: 0.6015 Jacobi stage: ITER: 2197 RES: 0.55834
ELA: 0.70161 Jacobi stage: ITER: 2523 RES: 0.523
ELA: 0.80172 Jacobi stage: ITER: 2827 RES: 0.49321
ELA: 0.90184 Jacobi stage: ITER: 3117 RES: 0.46716
ELA: 1.0019 Jacobi stage: ITER: 3363 RES: 0.44702
ELA: 1.1021 Jacobi stage: ITER: 3629 RES: 0.42639
ELA: 1.2022 Jacobi stage: ITER: 3869 RES: 0.40907
ELA: 1.3023 Jacobi stage: ITER: 4187 RES: 0.38774
ELA: 1.4024 Jacobi stage: ITER: 4541 RES: 0.36546
ELA: 1.5025 Jacobi stage: ITER: 4927 RES: 0.34323
ELA: 1.6026 Jacobi stage: ITER: 5247 RES: 0.32596
ELA: 1.7027 Jacobi stage: ITER: 5495 RES: 0.31328
ELA: 1.8032 Jacobi stage: ITER: 5797 RES: 0.29851
ELA: 1.9033 Jacobi stage: ITER: 5975 RES: 0.29032
ELA: 2.0034 Jacobi stage: ITER: 6155 RES: 0.28221
ELA: 2.1035 Jacobi stage: ITER: 6297 RES: 0.27589
ELA: 2.2036 Jacobi stage: ITER: 6487 RES: 0.26788
ELA: 2.3037 Jacobi stage: ITER: 6687 RES: 0.25964
ELA: 2.4042 Jacobi stage: ITER: 6931 RES: 0.24994
ELA: 2.5043 Jacobi stage: ITER: 7053 RES: 0.24516
ELA: 2.6072 Jacobi stage: ITER: 7209 RES: 0.23929
ELA: 2.7073 Jacobi stage: ITER: 7311 RES: 0.2356
ELA: 2.8074 Jacobi stage: ITER: 7445 RES: 0.23068
ELA: 2.9075 Jacobi stage: ITER: 7747 RES: 0.2202
ELA: 3.0076 Jacobi stage: ITER: 8113 RES: 0.20802
ELA: 3.1077 Jacobi stage: ITER: 8351 RES: 0.20057
ELA: 3.2079 Jacobi stage: ITER: 8785 RES: 0.18752
ELA: 3.308 Jacobi stage: ITER: 9525 RES: 0.16731
ELA: 3.4081 Jacobi stage: ITER: 9849 RES: 0.15918
ELA: 3.5082 Jacobi stage: ITER: 10163 RES: 0.15171
ELA: 3.6084 Jacobi stage: ITER: 10513 RES: 0.14372
ELA: 3.7085 Jacobi stage: ITER: 10837 RES: 0.13673
ELA: 3.8086 Jacobi stage: ITER: 11169 RES: 0.12993
ELA: 3.9092 Jacobi stage: ITER: 11487 RES: 0.12377
ELA: 4.0093 Jacobi stage: ITER: 11791 RES: 0.11812
ELA: 4.1094 Jacobi stage: ITER: 12119 RES: 0.11232
ELA: 4.2095 Jacobi stage: ITER: 12451 RES: 0.10673
ELA: 4.3096 Jacobi stage: ITER: 12773 RES: 0.10155
ELA: 4.4098 Jacobi stage: ITER: 13067 RES: 0.097092
ELA: 4.5099 Jacobi stage: ITER: 13391 RES: 0.092377
ELA: 4.61 Jacobi stage: ITER: 13723 RES: 0.087784
ELA: 4.7101 Jacobi stage: ITER: 14041 RES: 0.083573
ELA: 4.8102 Jacobi stage: ITER: 14367 RES: 0.079515
ELA: 4.9104 Jacobi stage: ITER: 14683 RES: 0.075747
ELA: 5.0105 Jacobi stage: ITER: 14981 RES: 0.072336
ELA: 5.1106 Jacobi stage: ITER: 15295 RES: 0.068951
ELA: 5.2112 Jacobi stage: ITER: 15611 RES: 0.065684
ELA: 5.3113 Jacobi stage: ITER: 15939 RES: 0.062457
ELA: 5.4114 Jacobi stage: ITER: 16271 RES: 0.059351
ELA: 5.5117 Jacobi stage: ITER: 16583 RES: 0.056574
ELA: 5.6119 Jacobi stage: ITER: 16889 RES: 0.05396
ELA: 5.7132 Jacobi stage: ITER: 17221 RES: 0.051277
ELA: 5.8133 Jacobi stage: ITER: 17523 RES: 0.048968
ELA: 5.9134 Jacobi stage: ITER: 17843 RES: 0.046619
ELA: 6.0135 Jacobi stage: ITER: 18161 RES: 0.044383
ELA: 6.1142 Jacobi stage: ITER: 18493 RES: 0.042176
ELA: 6.2143 Jacobi stage: ITER: 18817 RES: 0.040129
ELA: 6.3144 Jacobi stage: ITER: 19139 RES: 0.038204
ELA: 6.4145 Jacobi stage: ITER: 19459 RES: 0.036372
ELA: 6.5146 Jacobi stage: ITER: 19783 RES: 0.034606
ELA: 6.6147 Jacobi stage: ITER: 20093 RES: 0.032986
ELA: 6.7148 Jacobi stage: ITER: 20401 RES: 0.031462
ELA: 6.815 Jacobi stage: ITER: 20727 RES: 0.029935
ELA: 6.9151 Jacobi stage: ITER: 21055 RES: 0.028464
ELA: 7.0152 Jacobi stage: ITER: 21369 RES: 0.027115
ELA: 7.1157 Jacobi stage: ITER: 21685 RES: 0.025831
ELA: 7.2159 Jacobi stage: ITER: 22013 RES: 0.024562
ELA: 7.316 Jacobi stage: ITER: 22335 RES: 0.023383
ELA: 7.4161 Jacobi stage: ITER: 22663 RES: 0.022235
ELA: 7.5163 Jacobi stage: ITER: 22971 RES: 0.021207
ELA: 7.6192 Jacobi stage: ITER: 23307 RES: 0.02014
ELA: 7.7193 Jacobi stage: ITER: 23623 RES: 0.019186
ELA: 7.8194 Jacobi stage: ITER: 23951 RES: 0.018244
ELA: 7.9201 Jacobi stage: ITER: 24261 RES: 0.01739
ELA: 8.0202 Jacobi stage: ITER: 24583 RES: 0.016556
ELA: 8.1203 Jacobi stage: ITER: 24903 RES: 0.015762
ELA: 8.2204 Jacobi stage: ITER: 25227 RES: 0.014996
ELA: 8.3205 Jacobi stage: ITER: 25555 RES: 0.01426
ELA: 8.422 Jacobi stage: ITER: 25885 RES: 0.013551
ELA: 8.5235 Jacobi stage: ITER: 26211 RES: 0.012893
ELA: 8.6237 Jacobi stage: ITER: 26513 RES: 0.012305
ELA: 8.7238 Jacobi stage: ITER: 26825 RES: 0.011729
ELA: 8.8252 Jacobi stage: ITER: 27155 RES: 0.011153
ELA: 8.9253 Jacobi stage: ITER: 27479 RES: 0.010611
ELA: 9.0254 Jacobi stage: ITER: 27787 RES: 0.010121
ELA: 9.1255 Jacobi stage: ITER: 28083 RES: 0.009671
ELA: 9.2256 Jacobi stage: ITER: 28395 RES: 0.0092184
ELA: 9.3257 Jacobi stage: ITER: 28711 RES: 0.0087817
ELA: 9.4302 Jacobi stage: ITER: 29053 RES: 0.0083297
ELA: 9.5303 Jacobi stage: ITER: 29375 RES: 0.0079302
ELA: 9.6304 Jacobi stage: ITER: 29707 RES: 0.0075359
ELA: 9.7305 Jacobi stage: ITER: 30055 RES: 0.0071437
ELA: 9.8306 Jacobi stage: ITER: 30351 RES: 0.0068261
ELA: 9.9307 Jacobi stage: ITER: 30679 RES: 0.0064907
ELA: 10.031 Jacobi stage: ITER: 31007 RES: 0.0061718
ELA: 10.131 Jacobi stage: ITER: 31335 RES: 0.0058686
ELA: 10.231 Jacobi stage: ITER: 31663 RES: 0.0055802
ELA: 10.331 Jacobi stage: ITER: 31991 RES: 0.0053061
ELA: 10.431 Jacobi stage: ITER: 32319 RES: 0.0050454
ELA: 10.531 Jacobi stage: ITER: 32647 RES: 0.0047975
ELA: 10.631 Jacobi stage: ITER: 32975 RES: 0.0045618
ELA: 10.732 Jacobi stage: ITER: 33301 RES: 0.0043376
ELA: 10.832 Jacobi stage: ITER: 33629 RES: 0.0041245
ELA: 10.932 Jacobi stage: ITER: 33955 RES: 0.0039243
ELA: 11.032 Jacobi stage: ITER: 34285 RES: 0.0037292
ELA: 11.132 Jacobi stage: ITER: 34613 RES: 0.0035459
ELA: 11.232 Jacobi stage: ITER: 34941 RES: 0.0033717
ELA: 11.332 Jacobi stage: ITER: 35267 RES: 0.003208
ELA: 11.432 Jacobi stage: ITER: 35595 RES: 0.0030504
ELA: 11.533 Jacobi stage: ITER: 35923 RES: 0.0029005
ELA: 11.633 Jacobi stage: ITER: 36251 RES: 0.002758
ELA: 11.733 Jacobi stage: ITER: 36579 RES: 0.0026225
ELA: 11.833 Jacobi stage: ITER: 36905 RES: 0.0024936
ELA: 11.933 Jacobi stage: ITER: 37235 RES: 0.0023711
ELA: 12.033 Jacobi stage: ITER: 37583 RES: 0.0022477
ELA: 12.133 Jacobi stage: ITER: 37911 RES: 0.0021373
ELA: 12.233 Jacobi stage: ITER: 38239 RES: 0.0020323
ELA: 12.333 Jacobi stage: ITER: 38567 RES: 0.0019324
ELA: 12.433 Jacobi stage: ITER: 38895 RES: 0.0018375
ELA: 12.534 Jacobi stage: ITER: 39223 RES: 0.0017472
ELA: 12.634 Jacobi stage: ITER: 39551 RES: 0.0016613
ELA: 12.734 Jacobi stage: ITER: 39877 RES: 0.0015797
ELA: 12.834 Jacobi stage: ITER: 40205 RES: 0.0015021
ELA: 12.934 Jacobi stage: ITER: 40533 RES: 0.0014283
ELA: 13.034 Jacobi stage: ITER: 40861 RES: 0.0013581
ELA: 13.134 Jacobi stage: ITER: 41187 RES: 0.0012922
ELA: 13.234 Jacobi stage: ITER: 41515 RES: 0.0012287
ELA: 13.335 Jacobi stage: ITER: 41843 RES: 0.0011683
ELA: 13.435 Jacobi stage: ITER: 42171 RES: 0.0011109
ELA: 13.535 Jacobi stage: ITER: 42499 RES: 0.0010563
ELA: 13.635 Jacobi stage: ITER: 42827 RES: 0.0010044
ELA: 13.735 Jacobi stage: ITER: 43155 RES: 0.00095508
ELA: 13.835 Jacobi stage: ITER: 43483 RES: 0.00090816
ELA: 13.935 Jacobi stage: ITER: 43811 RES: 0.00086354
ELA: 14.035 Jacobi stage: ITER: 44137 RES: 0.00082111
ELA: 14.135 Jacobi stage: ITER: 44465 RES: 0.00078076
ELA: 14.236 Jacobi stage: ITER: 44793 RES: 0.0007424
ELA: 14.336 Jacobi stage: ITER: 45119 RES: 0.00070636
ELA: 14.436 Jacobi stage: ITER: 45447 RES: 0.00067165
ELA: 14.536 Jacobi stage: ITER: 45811 RES: 0.00063513
ELA: 14.636 Jacobi stage: ITER: 46139 RES: 0.00060393
ELA: 14.736 Jacobi stage: ITER: 46465 RES: 0.00057425
ELA: 14.836 Jacobi stage: ITER: 46793 RES: 0.00054604
ELA: 14.936 Jacobi stage: ITER: 47121 RES: 0.00051921
ELA: 15.036 Jacobi stage: ITER: 47447 RES: 0.000494
ELA: 15.137 Jacobi stage: ITER: 47775 RES: 0.00046973
ELA: 15.237 Jacobi stage: ITER: 48103 RES: 0.00044665
ELA: 15.337 Jacobi stage: ITER: 48431 RES: 0.00042471
ELA: 15.437 Jacobi stage: ITER: 48759 RES: 0.00040384
ELA: 15.537 Jacobi stage: ITER: 49087 RES: 0.000384
ELA: 15.637 Jacobi stage: ITER: 49415 RES: 0.00036513
ELA: 15.737 Jacobi stage: ITER: 49741 RES: 0.00034719
ELA: 15.837 Jacobi stage: ITER: 50069 RES: 0.00033013
ELA: 15.938 Jacobi stage: ITER: 50397 RES: 0.00031391
ELA: 16.038 Jacobi stage: ITER: 50723 RES: 0.00029867
ELA: 16.138 Jacobi stage: ITER: 51051 RES: 0.000284
ELA: 16.238 Jacobi stage: ITER: 51377 RES: 0.00027004
ELA: 16.338 Jacobi stage: ITER: 51705 RES: 0.00025677
ELA: 16.438 Jacobi stage: ITER: 52031 RES: 0.00024431
ELA: 16.538 Jacobi stage: ITER: 52359 RES: 0.0002323
ELA: 16.638 Jacobi stage: ITER: 52687 RES: 0.00022089
ELA: 16.738 Jacobi stage: ITER: 53015 RES: 0.00021004
ELA: 16.839 Jacobi stage: ITER: 53343 RES: 0.00019972
ELA: 16.939 Jacobi stage: ITER: 53671 RES: 0.00018991
ELA: 17.039 Jacobi stage: ITER: 53999 RES: 0.00018057
ELA: 17.139 Jacobi stage: ITER: 54325 RES: 0.0001717
ELA: 17.239 Jacobi stage: ITER: 54653 RES: 0.00016327
ELA: 17.339 Jacobi stage: ITER: 54981 RES: 0.00015524
ELA: 17.439 Jacobi stage: ITER: 55309 RES: 0.00014762
ELA: 17.539 Jacobi stage: ITER: 55635 RES: 0.00014045
ELA: 17.64 Jacobi stage: ITER: 55963 RES: 0.00013355
ELA: 17.74 Jacobi stage: ITER: 56291 RES: 0.00012699
ELA: 17.84 Jacobi stage: ITER: 56619 RES: 0.00012075
ELA: 17.94 Jacobi stage: ITER: 56947 RES: 0.00011482
ELA: 18.04 Jacobi stage: ITER: 57275 RES: 0.00010917
ELA: 18.14 Jacobi stage: ITER: 57601 RES: 0.00010381
ELA: 18.24 Jacobi stage: ITER: 57929 RES: 9.8709e-05
ELA: 18.34 Jacobi stage: ITER: 58257 RES: 9.386e-05
ELA: 18.441 Jacobi stage: ITER: 58583 RES: 8.9303e-05
ELA: 18.541 Jacobi stage: ITER: 58911 RES: 8.4915e-05
ELA: 18.641 Jacobi stage: ITER: 59239 RES: 8.0743e-05
ELA: 18.741 Jacobi stage: ITER: 59567 RES: 7.6776e-05
ELA: 18.841 Jacobi stage: ITER: 59895 RES: 7.3004e-05
ELA: 18.941 Jacobi stage: ITER: 60223 RES: 6.9417e-05
ELA: 19.041 Jacobi stage: ITER: 60549 RES: 6.6006e-05
ELA: 19.141 Jacobi stage: ITER: 60877 RES: 6.2763e-05
ELA: 19.242 Jacobi stage: ITER: 61205 RES: 5.9679e-05
ELA: 19.342 Jacobi stage: ITER: 61533 RES: 5.6747e-05
ELA: 19.442 Jacobi stage: ITER: 61859 RES: 5.3992e-05
ELA: 19.542 Jacobi stage: ITER: 62187 RES: 5.1339e-05
ELA: 19.642 Jacobi stage: ITER: 62515 RES: 4.8817e-05
ELA: 19.742 Jacobi stage: ITER: 62843 RES: 4.6418e-05
ELA: 19.842 Jacobi stage: ITER: 63171 RES: 4.4137e-05
ELA: 19.942 Jacobi stage: ITER: 63499 RES: 4.1969e-05
ELA: 20.043 Jacobi stage: ITER: 63827 RES: 3.9907e-05
ELA: 20.143 Jacobi stage: ITER: 64153 RES: 3.7946e-05
ELA: 20.243 Jacobi stage: ITER: 64481 RES: 3.6082e-05
ELA: 20.343 Jacobi stage: ITER: 64809 RES: 3.4309e-05
ELA: 20.443 Jacobi stage: ITER: 65135 RES: 3.2643e-05
ELA: 20.543 Jacobi stage: ITER: 65463 RES: 3.1039e-05
ELA: 20.643 Jacobi stage: ITER: 65791 RES: 2.9514e-05
ELA: 20.744 Jacobi stage: ITER: 66119 RES: 2.8064e-05
ELA: 20.844 Jacobi stage: ITER: 66447 RES: 2.6685e-05
ELA: 20.944 Jacobi stage: ITER: 66775 RES: 2.5374e-05
ELA: 21.044 Jacobi stage: ITER: 67101 RES: 2.4127e-05
ELA: 21.144 Jacobi stage: ITER: 67429 RES: 2.2942e-05
ELA: 21.244 Jacobi stage: ITER: 67757 RES: 2.1815e-05
ELA: 21.344 Jacobi stage: ITER: 68085 RES: 2.0743e-05
ELA: 21.444 Jacobi stage: ITER: 68411 RES: 1.9736e-05
ELA: 21.545 Jacobi stage: ITER: 68739 RES: 1.8766e-05
ELA: 21.645 Jacobi stage: ITER: 69067 RES: 1.7844e-05
ELA: 21.745 Jacobi stage: ITER: 69395 RES: 1.6967e-05
ELA: 21.845 Jacobi stage: ITER: 69723 RES: 1.6134e-05
ELA: 21.945 Jacobi stage: ITER: 70051 RES: 1.5341e-05
ELA: 22.045 Jacobi stage: ITER: 70377 RES: 1.4587e-05
ELA: 22.145 Jacobi stage: ITER: 70705 RES: 1.3871e-05
ELA: 22.245 Jacobi stage: ITER: 71031 RES: 1.3197e-05
ELA: 22.345 Jacobi stage: ITER: 71359 RES: 1.2549e-05
ELA: 22.445 Jacobi stage: ITER: 71687 RES: 1.1932e-05
ELA: 22.546 Jacobi stage: ITER: 72015 RES: 1.1346e-05
ELA: 22.646 Jacobi stage: ITER: 72343 RES: 1.0788e-05
ELA: 22.746 Jacobi stage: ITER: 72671 RES: 1.0258e-05
ELA: 22.846 Jacobi stage: ITER: 72997 RES: 9.7543e-06
ELA: 22.946 Jacobi stage: ITER: 73325 RES: 9.2751e-06
ELA: 23.046 Jacobi stage: ITER: 73653 RES: 8.8194e-06
ELA: 23.146 Jacobi stage: ITER: 73981 RES: 8.386e-06
ELA: 23.246 Jacobi stage: ITER: 74307 RES: 7.9789e-06
ELA: 23.346 Jacobi stage: ITER: 74635 RES: 7.5869e-06
ELA: 23.447 Jacobi stage: ITER: 74963 RES: 7.2141e-06
ELA: 23.547 Jacobi stage: ITER: 75291 RES: 6.8597e-06
ELA: 23.647 Jacobi stage: ITER: 75619 RES: 6.5226e-06
ELA: 23.747 Jacobi stage: ITER: 75947 RES: 6.2021e-06
ELA: 23.847 Jacobi stage: ITER: 76273 RES: 5.8974e-06
ELA: 23.947 Jacobi stage: ITER: 76601 RES: 5.6076e-06
ELA: 24.047 Jacobi stage: ITER: 76929 RES: 5.3321e-06
ELA: 24.147 Jacobi stage: ITER: 77255 RES: 5.0733e-06
ELA: 24.247 Jacobi stage: ITER: 77585 RES: 4.821e-06
ELA: 24.348 Jacobi stage: ITER: 77913 RES: 4.5842e-06
ELA: 24.448 Jacobi stage: ITER: 78241 RES: 4.3589e-06
ELA: 24.548 Jacobi stage: ITER: 78567 RES: 4.1473e-06
ELA: 24.648 Jacobi stage: ITER: 78895 RES: 3.9435e-06
ELA: 24.748 Jacobi stage: ITER: 79223 RES: 3.7498e-06
ELA: 24.848 Jacobi stage: ITER: 79551 RES: 3.5655e-06
ELA: 24.948 Jacobi stage: ITER: 79879 RES: 3.3903e-06
ELA: 25.048 Jacobi stage: ITER: 80207 RES: 3.2238e-06
ELA: 25.148 Jacobi stage: ITER: 80533 RES: 3.0654e-06
ELA: 25.249 Jacobi stage: ITER: 80887 RES: 2.904e-06
ELA: 25.349 Jacobi stage: ITER: 81215 RES: 2.7614e-06
ELA: 25.449 Jacobi stage: ITER: 81543 RES: 2.6257e-06
ELA: 25.549 Jacobi stage: ITER: 81871 RES: 2.4967e-06
ELA: 25.649 Jacobi stage: ITER: 82199 RES: 2.374e-06
ELA: 25.749 Jacobi stage: ITER: 82527 RES: 2.2574e-06
ELA: 25.849 Jacobi stage: ITER: 82855 RES: 2.1464e-06
ELA: 25.949 Jacobi stage: ITER: 83181 RES: 2.041e-06
ELA: 26.049 Jacobi stage: ITER: 83509 RES: 1.9407e-06
ELA: 26.15 Jacobi stage: ITER: 83837 RES: 1.8454e-06
ELA: 26.25 Jacobi stage: ITER: 84247 RES: 1.7333e-06
ELA: 26.35 Jacobi stage: ITER: 84757 RES: 1.6022e-06
ELA: 26.45 Jacobi stage: ITER: 85249 RES: 1.4855e-06
ELA: 26.55 Jacobi stage: ITER: 85743 RES: 1.3774e-06
ELA: 26.65 Jacobi stage: ITER: 86235 RES: 1.2772e-06
ELA: 26.75 Jacobi stage: ITER: 86727 RES: 1.1842e-06
ELA: 26.85 Jacobi stage: ITER: 87219 RES: 1.098e-06
ELA: 26.95 Jacobi stage: ITER: 87711 RES: 1.0181e-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: