Template Numerical Library version\ main:b4a9fa1
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: 22665 RES: 0.022221
Jacobi stage: ITER: 44939 RES: 0.00072616
Jacobi stage: ITER: 67501 RES: 2.269e-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: 1355 RES: 0.67467
Jacobi stage: ITER: 1733 RES: 0.61714
Jacobi stage: ITER: 2113 RES: 0.56821
Jacobi stage: ITER: 2439 RES: 0.53178
Jacobi stage: ITER: 2691 RES: 0.50617
Jacobi stage: ITER: 2951 RES: 0.48187
Jacobi stage: ITER: 3203 RES: 0.46007
Jacobi stage: ITER: 3459 RES: 0.43946
Jacobi stage: ITER: 3765 RES: 0.41645
Jacobi stage: ITER: 4035 RES: 0.3978
Jacobi stage: ITER: 4305 RES: 0.38003
Jacobi stage: ITER: 4559 RES: 0.3645
Jacobi stage: ITER: 5035 RES: 0.33728
Jacobi stage: ITER: 5727 RES: 0.30194
Jacobi stage: ITER: 6857 RES: 0.25276
Jacobi stage: ITER: 6987 RES: 0.24777
Jacobi stage: ITER: 7099 RES: 0.24349
Jacobi stage: ITER: 7289 RES: 0.23633
Jacobi stage: ITER: 7543 RES: 0.22727
Jacobi stage: ITER: 7775 RES: 0.21925
Jacobi stage: ITER: 8631 RES: 0.19209
Jacobi stage: ITER: 9261 RES: 0.17426
Jacobi stage: ITER: 9487 RES: 0.16835
Jacobi stage: ITER: 9787 RES: 0.16075
Jacobi stage: ITER: 10583 RES: 0.14222
Jacobi stage: ITER: 10695 RES: 0.1398
Jacobi stage: ITER: 10823 RES: 0.13707
Jacobi stage: ITER: 11055 RES: 0.13227
Jacobi stage: ITER: 11507 RES: 0.12339
Jacobi stage: ITER: 11757 RES: 0.1187
Jacobi stage: ITER: 12245 RES: 0.11013
Jacobi stage: ITER: 12927 RES: 0.099202
Jacobi stage: ITER: 13209 RES: 0.094967
Jacobi stage: ITER: 13455 RES: 0.091473
Jacobi stage: ITER: 13639 RES: 0.088924
Jacobi stage: ITER: 13883 RES: 0.085652
Jacobi stage: ITER: 15051 RES: 0.071584
Jacobi stage: ITER: 15223 RES: 0.069718
Jacobi stage: ITER: 15491 RES: 0.066906
Jacobi stage: ITER: 15711 RES: 0.064683
Jacobi stage: ITER: 15951 RES: 0.062342
Jacobi stage: ITER: 16167 RES: 0.060307
Jacobi stage: ITER: 17179 RES: 0.051625
Jacobi stage: ITER: 17463 RES: 0.049421
Jacobi stage: ITER: 17709 RES: 0.047574
Jacobi stage: ITER: 18079 RES: 0.044959
Jacobi stage: ITER: 18331 RES: 0.043252
Jacobi stage: ITER: 18651 RES: 0.041178
Jacobi stage: ITER: 18931 RES: 0.039444
Jacobi stage: ITER: 19191 RES: 0.0379
Jacobi stage: ITER: 19503 RES: 0.036127
Jacobi stage: ITER: 19799 RES: 0.034521
Jacobi stage: ITER: 20915 RES: 0.029083
Jacobi stage: ITER: 22353 RES: 0.023312
Jacobi stage: ITER: 22635 RES: 0.02233
Jacobi stage: ITER: 22763 RES: 0.021896
Jacobi stage: ITER: 22827 RES: 0.021681
Jacobi stage: ITER: 22951 RES: 0.021272
Jacobi stage: ITER: 23045 RES: 0.020961
Jacobi stage: ITER: 23117 RES: 0.02073
Jacobi stage: ITER: 23199 RES: 0.020477
Jacobi stage: ITER: 23263 RES: 0.020277
Jacobi stage: ITER: 23407 RES: 0.019833
Jacobi stage: ITER: 23517 RES: 0.019495
Jacobi stage: ITER: 23595 RES: 0.019269
Jacobi stage: ITER: 23781 RES: 0.01872
Jacobi stage: ITER: 23973 RES: 0.018176
Jacobi stage: ITER: 24207 RES: 0.01754
Jacobi stage: ITER: 24459 RES: 0.016874
Jacobi stage: ITER: 24679 RES: 0.016313
Jacobi stage: ITER: 24879 RES: 0.01582
Jacobi stage: ITER: 25121 RES: 0.015238
Jacobi stage: ITER: 25369 RES: 0.014668
Jacobi stage: ITER: 25623 RES: 0.014111
Jacobi stage: ITER: 25877 RES: 0.013567
Jacobi stage: ITER: 26131 RES: 0.013052
Jacobi stage: ITER: 26387 RES: 0.012549
Jacobi stage: ITER: 26563 RES: 0.012214
Jacobi stage: ITER: 26803 RES: 0.011772
Jacobi stage: ITER: 27023 RES: 0.011381
Jacobi stage: ITER: 27279 RES: 0.010942
Jacobi stage: ITER: 27491 RES: 0.010592
Jacobi stage: ITER: 27741 RES: 0.010189
Jacobi stage: ITER: 27993 RES: 0.0098026
Jacobi stage: ITER: 28219 RES: 0.009471
Jacobi stage: ITER: 28427 RES: 0.0091732
Jacobi stage: ITER: 28675 RES: 0.0088304
Jacobi stage: ITER: 28889 RES: 0.0085422
Jacobi stage: ITER: 29143 RES: 0.0082179
Jacobi stage: ITER: 29393 RES: 0.0079058
Jacobi stage: ITER: 29615 RES: 0.0076431
Jacobi stage: ITER: 29867 RES: 0.007353
Jacobi stage: ITER: 30089 RES: 0.0071043
Jacobi stage: ITER: 30311 RES: 0.0068682
Jacobi stage: ITER: 30559 RES: 0.0066115
Jacobi stage: ITER: 30779 RES: 0.0063918
Jacobi stage: ITER: 31031 RES: 0.0061491
Jacobi stage: ITER: 31279 RES: 0.0059193
Jacobi stage: ITER: 31535 RES: 0.005691
Jacobi stage: ITER: 31751 RES: 0.0055053
Jacobi stage: ITER: 31971 RES: 0.0053224
Jacobi stage: ITER: 32219 RES: 0.0051235
Jacobi stage: ITER: 32467 RES: 0.004932
Jacobi stage: ITER: 32691 RES: 0.0047652
Jacobi stage: ITER: 32939 RES: 0.0045871
Jacobi stage: ITER: 33151 RES: 0.0044401
Jacobi stage: ITER: 33403 RES: 0.0042715
Jacobi stage: ITER: 33653 RES: 0.0041093
Jacobi stage: ITER: 33879 RES: 0.0039703
Jacobi stage: ITER: 34145 RES: 0.0038102
Jacobi stage: ITER: 34323 RES: 0.0037086
Jacobi stage: ITER: 34575 RES: 0.0035678
Jacobi stage: ITER: 34823 RES: 0.0034344
Jacobi stage: ITER: 35259 RES: 0.003212
Jacobi stage: ITER: 35421 RES: 0.0031321
Jacobi stage: ITER: 35679 RES: 0.0030113
Jacobi stage: ITER: 35975 RES: 0.0028774
Jacobi stage: ITER: 36283 RES: 0.0027445
Jacobi stage: ITER: 36529 RES: 0.0026419
Jacobi stage: ITER: 36739 RES: 0.0025588
Jacobi stage: ITER: 36995 RES: 0.0024602
Jacobi stage: ITER: 37279 RES: 0.0023552
Jacobi stage: ITER: 37491 RES: 0.0022797
Jacobi stage: ITER: 37719 RES: 0.0022012
Jacobi stage: ITER: 37973 RES: 0.0021164
Jacobi stage: ITER: 38229 RES: 0.0020348
Jacobi stage: ITER: 38467 RES: 0.0019623
Jacobi stage: ITER: 38653 RES: 0.0019065
Jacobi stage: ITER: 38901 RES: 0.0018352
Jacobi stage: ITER: 39155 RES: 0.0017655
Jacobi stage: ITER: 39399 RES: 0.0017006
Jacobi stage: ITER: 39655 RES: 0.001635
Jacobi stage: ITER: 39851 RES: 0.0015865
Jacobi stage: ITER: 40091 RES: 0.0015291
Jacobi stage: ITER: 40315 RES: 0.0014774
Jacobi stage: ITER: 40551 RES: 0.0014248
Jacobi stage: ITER: 40767 RES: 0.0013783
Jacobi stage: ITER: 41053 RES: 0.0013186
Jacobi stage: ITER: 41343 RES: 0.0012616
Jacobi stage: ITER: 41553 RES: 0.0012212
Jacobi stage: ITER: 41775 RES: 0.0011806
Jacobi stage: ITER: 42035 RES: 0.0011344
Jacobi stage: ITER: 42299 RES: 0.0010893
Jacobi stage: ITER: 42549 RES: 0.0010479
Jacobi stage: ITER: 42797 RES: 0.0010088
Jacobi stage: ITER: 43041 RES: 0.00097166
Jacobi stage: ITER: 43275 RES: 0.00093764
Jacobi stage: ITER: 43495 RES: 0.00090648
Jacobi stage: ITER: 43747 RES: 0.00087207
Jacobi stage: ITER: 43971 RES: 0.00084257
Jacobi stage: ITER: 44219 RES: 0.00081108
Jacobi stage: ITER: 44465 RES: 0.00078076
Jacobi stage: ITER: 44723 RES: 0.00075066
Jacobi stage: ITER: 44967 RES: 0.00072305
Jacobi stage: ITER: 45187 RES: 0.00069902
Jacobi stage: ITER: 45427 RES: 0.00067372
Jacobi stage: ITER: 45641 RES: 0.00065173
Jacobi stage: ITER: 45899 RES: 0.0006266
Jacobi stage: ITER: 46155 RES: 0.00060244
Jacobi stage: ITER: 46411 RES: 0.00057921
Jacobi stage: ITER: 46639 RES: 0.00055928
Jacobi stage: ITER: 46865 RES: 0.00054003
Jacobi stage: ITER: 47129 RES: 0.00051857
Jacobi stage: ITER: 47381 RES: 0.00049888
Jacobi stage: ITER: 47631 RES: 0.00048024
Jacobi stage: ITER: 47883 RES: 0.000462
Jacobi stage: ITER: 48137 RES: 0.00044419
Jacobi stage: ITER: 48389 RES: 0.00042732
Jacobi stage: ITER: 48641 RES: 0.0004111
Jacobi stage: ITER: 48895 RES: 0.00039549
Jacobi stage: ITER: 49147 RES: 0.00038047
Jacobi stage: ITER: 49399 RES: 0.00036603
Jacobi stage: ITER: 49651 RES: 0.00035213
Jacobi stage: ITER: 49903 RES: 0.00033876
Jacobi stage: ITER: 50155 RES: 0.0003259
Jacobi stage: ITER: 50409 RES: 0.00031333
Jacobi stage: ITER: 50663 RES: 0.00030144
Jacobi stage: ITER: 50915 RES: 0.00028999
Jacobi stage: ITER: 51167 RES: 0.00027898
Jacobi stage: ITER: 51421 RES: 0.00026822
Jacobi stage: ITER: 51673 RES: 0.00025804
Jacobi stage: ITER: 51925 RES: 0.00024824
Jacobi stage: ITER: 52179 RES: 0.00023882
Jacobi stage: ITER: 52431 RES: 0.00022975
Jacobi stage: ITER: 52683 RES: 0.00022103
Jacobi stage: ITER: 52935 RES: 0.00021263
Jacobi stage: ITER: 53187 RES: 0.00020456
Jacobi stage: ITER: 53439 RES: 0.00019679
Jacobi stage: ITER: 53691 RES: 0.00018932
Jacobi stage: ITER: 53945 RES: 0.00018202
Jacobi stage: ITER: 54197 RES: 0.00017511
Jacobi stage: ITER: 54449 RES: 0.00016846
Jacobi stage: ITER: 54703 RES: 0.00016207
Jacobi stage: ITER: 54955 RES: 0.00015591
Jacobi stage: ITER: 55207 RES: 0.00014999
Jacobi stage: ITER: 55459 RES: 0.0001443
Jacobi stage: ITER: 55711 RES: 0.00013882
Jacobi stage: ITER: 55963 RES: 0.00013355
Jacobi stage: ITER: 56217 RES: 0.0001284
Jacobi stage: ITER: 56469 RES: 0.00012352
Jacobi stage: ITER: 56721 RES: 0.00011883
Jacobi stage: ITER: 56973 RES: 0.00011432
Jacobi stage: ITER: 57227 RES: 0.00010998
Jacobi stage: ITER: 57479 RES: 0.00010581
Jacobi stage: ITER: 57731 RES: 0.00010179
Jacobi stage: ITER: 57983 RES: 9.7924e-05
Jacobi stage: ITER: 58235 RES: 9.4206e-05
Jacobi stage: ITER: 58487 RES: 9.0629e-05
Jacobi stage: ITER: 58741 RES: 8.7135e-05
Jacobi stage: ITER: 58993 RES: 8.3826e-05
Jacobi stage: ITER: 59229 RES: 8.0842e-05
Jacobi stage: ITER: 59473 RES: 7.7868e-05
Jacobi stage: ITER: 59967 RES: 7.2201e-05
Jacobi stage: ITER: 60219 RES: 6.9459e-05
Jacobi stage: ITER: 60473 RES: 6.6781e-05
Jacobi stage: ITER: 60725 RES: 6.4245e-05
Jacobi stage: ITER: 60979 RES: 6.1806e-05
Jacobi stage: ITER: 61231 RES: 5.946e-05
Jacobi stage: ITER: 61483 RES: 5.7202e-05
Jacobi stage: ITER: 61735 RES: 5.503e-05
Jacobi stage: ITER: 61987 RES: 5.2941e-05
Jacobi stage: ITER: 62239 RES: 5.0931e-05
Jacobi stage: ITER: 62493 RES: 4.8967e-05
Jacobi stage: ITER: 62745 RES: 4.7108e-05
Jacobi stage: ITER: 62997 RES: 4.5319e-05
Jacobi stage: ITER: 63251 RES: 4.3598e-05
Jacobi stage: ITER: 63503 RES: 4.1943e-05
Jacobi stage: ITER: 63755 RES: 4.0351e-05
Jacobi stage: ITER: 64007 RES: 3.8819e-05
Jacobi stage: ITER: 64259 RES: 3.7345e-05
Jacobi stage: ITER: 64511 RES: 3.5927e-05
Jacobi stage: ITER: 64763 RES: 3.4563e-05
Jacobi stage: ITER: 65017 RES: 3.323e-05
Jacobi stage: ITER: 65269 RES: 3.1968e-05
Jacobi stage: ITER: 65521 RES: 3.0755e-05
Jacobi stage: ITER: 65775 RES: 2.9587e-05
Jacobi stage: ITER: 66027 RES: 2.8463e-05
Jacobi stage: ITER: 66279 RES: 2.7383e-05
Jacobi stage: ITER: 66531 RES: 2.6343e-05
Jacobi stage: ITER: 66783 RES: 2.5343e-05
Jacobi stage: ITER: 67037 RES: 2.4366e-05
Jacobi stage: ITER: 67289 RES: 2.3441e-05
Jacobi stage: ITER: 67541 RES: 2.2551e-05
Jacobi stage: ITER: 67795 RES: 2.1694e-05
Jacobi stage: ITER: 68047 RES: 2.0871e-05
Jacobi stage: ITER: 68299 RES: 2.0078e-05
Jacobi stage: ITER: 68551 RES: 1.9316e-05
Jacobi stage: ITER: 68803 RES: 1.8583e-05
Jacobi stage: ITER: 69055 RES: 1.7877e-05
Jacobi stage: ITER: 69309 RES: 1.7188e-05
Jacobi stage: ITER: 69561 RES: 1.6535e-05
Jacobi stage: ITER: 69813 RES: 1.5907e-05
Jacobi stage: ITER: 70067 RES: 1.5303e-05
Jacobi stage: ITER: 70319 RES: 1.4722e-05
Jacobi stage: ITER: 70571 RES: 1.4163e-05
Jacobi stage: ITER: 70823 RES: 1.3626e-05
Jacobi stage: ITER: 71075 RES: 1.3108e-05
Jacobi stage: ITER: 71327 RES: 1.2611e-05
Jacobi stage: ITER: 71581 RES: 1.2124e-05
Jacobi stage: ITER: 71833 RES: 1.1664e-05
Jacobi stage: ITER: 72083 RES: 1.1228e-05
Jacobi stage: ITER: 72335 RES: 1.0802e-05
Jacobi stage: ITER: 72587 RES: 1.0392e-05
Jacobi stage: ITER: 72839 RES: 9.997e-06
Jacobi stage: ITER: 73091 RES: 9.6175e-06
Jacobi stage: ITER: 73345 RES: 9.2466e-06
Jacobi stage: ITER: 73597 RES: 8.8955e-06
Jacobi stage: ITER: 73849 RES: 8.5578e-06
Jacobi stage: ITER: 74103 RES: 8.2329e-06
Jacobi stage: ITER: 74355 RES: 7.9203e-06
Jacobi stage: ITER: 74607 RES: 7.6196e-06
Jacobi stage: ITER: 74859 RES: 7.3303e-06
Jacobi stage: ITER: 75111 RES: 7.052e-06
Jacobi stage: ITER: 75363 RES: 6.7842e-06
Jacobi stage: ITER: 75617 RES: 6.5226e-06
Jacobi stage: ITER: 75869 RES: 6.275e-06
Jacobi stage: ITER: 76123 RES: 6.0367e-06
Jacobi stage: ITER: 76375 RES: 5.8075e-06
Jacobi stage: ITER: 76627 RES: 5.587e-06
Jacobi stage: ITER: 76879 RES: 5.3749e-06
Jacobi stage: ITER: 77131 RES: 5.1708e-06
Jacobi stage: ITER: 77383 RES: 4.9745e-06
Jacobi stage: ITER: 77635 RES: 4.7856e-06
Jacobi stage: ITER: 77889 RES: 4.6011e-06
Jacobi stage: ITER: 78141 RES: 4.4264e-06
Jacobi stage: ITER: 78393 RES: 4.2583e-06
Jacobi stage: ITER: 78645 RES: 4.0967e-06
Jacobi stage: ITER: 78899 RES: 3.9411e-06
Jacobi stage: ITER: 79151 RES: 3.7915e-06
Jacobi stage: ITER: 79403 RES: 3.6475e-06
Jacobi stage: ITER: 79655 RES: 3.509e-06
Jacobi stage: ITER: 79907 RES: 3.3758e-06
Jacobi stage: ITER: 80159 RES: 3.2476e-06
Jacobi stage: ITER: 80411 RES: 3.1243e-06
Jacobi stage: ITER: 80665 RES: 3.0038e-06
Jacobi stage: ITER: 80917 RES: 2.8898e-06
Jacobi stage: ITER: 81169 RES: 2.7801e-06
Jacobi stage: ITER: 81423 RES: 2.6745e-06
Jacobi stage: ITER: 81675 RES: 2.573e-06
Jacobi stage: ITER: 81927 RES: 2.4753e-06
Jacobi stage: ITER: 82179 RES: 2.3813e-06
Jacobi stage: ITER: 82431 RES: 2.2909e-06
Jacobi stage: ITER: 82683 RES: 2.2039e-06
Jacobi stage: ITER: 82935 RES: 2.1202e-06
Jacobi stage: ITER: 83187 RES: 2.0397e-06
Jacobi stage: ITER: 83441 RES: 1.9611e-06
Jacobi stage: ITER: 83693 RES: 1.8866e-06
Jacobi stage: ITER: 83945 RES: 1.815e-06
Jacobi stage: ITER: 84199 RES: 1.7461e-06
Jacobi stage: ITER: 84451 RES: 1.6798e-06
Jacobi stage: ITER: 84703 RES: 1.616e-06
Jacobi stage: ITER: 84955 RES: 1.5547e-06
Jacobi stage: ITER: 85207 RES: 1.4956e-06
Jacobi stage: ITER: 85459 RES: 1.4388e-06
Jacobi stage: ITER: 85711 RES: 1.3842e-06
Jacobi stage: ITER: 85977 RES: 1.3284e-06
Jacobi stage: ITER: 86355 RES: 1.2538e-06
Jacobi stage: ITER: 86735 RES: 1.1827e-06
Jacobi stage: ITER: 87115 RES: 1.1157e-06
Jacobi stage: ITER: 87495 RES: 1.0524e-06
Vector x = [ 0.999999, 0.999999, 0.999998, 0.999999, 0.999999 ]

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

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

The result looks as follows:

Solving linear system on host:
Row: 0 -> 0:2.5 1:-1
Row: 1 -> 0:-1 1:2.5 2:-1
Row: 2 -> 1:-1 2:2.5 3:-1
Row: 3 -> 2:-1 3:2.5 4:-1
Row: 4 -> 3:-1 4:2.5
Vector b = [ 1.5, 0.5, 0.5, 0.5, 1.5 ]
ELA:2.0551e-
ELA: 0.10014 Jacobi stage: ITER: 23165 RES: 0.020578
ELA: 0.2004 Jacobi stage: ITER: 46521 RES: 0.00056933
ELA: 0.30052 Jacobi stage: ITER: 70851 RES: 1.3559e-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:0.000111
ELA: 0.10022 Jacobi stage: ITER: 383 RES: 0.88222
ELA: 0.20035 Jacobi stage: ITER: 761 RES: 0.78805
ELA: 0.3011 Jacobi stage: ITER: 1145 RES: 0.71072
ELA: 0.40211 Jacobi stage: ITER: 1437 RES: 0.66109
ELA: 0.50223 Jacobi stage: ITER: 1691 RES: 0.62332
ELA: 0.60236 Jacobi stage: ITER: 1931 RES: 0.59097
ELA: 0.70248 Jacobi stage: ITER: 2183 RES: 0.5602
ELA: 0.8026 Jacobi stage: ITER: 2449 RES: 0.53051
ELA: 0.9101 Jacobi stage: ITER: 2735 RES: 0.50192
ELA: 1.0121 Jacobi stage: ITER: 2963 RES: 0.48079
ELA: 1.1122 Jacobi stage: ITER: 3239 RES: 0.45708
ELA: 1.2123 Jacobi stage: ITER: 3477 RES: 0.43791
ELA: 1.3125 Jacobi stage: ITER: 3645 RES: 0.4252
ELA: 1.4126 Jacobi stage: ITER: 3765 RES: 0.41645
ELA: 1.5127 Jacobi stage: ITER: 3927 RES: 0.40517
ELA: 1.6128 Jacobi stage: ITER: 4755 RES: 0.35297
ELA: 1.7129 Jacobi stage: ITER: 5743 RES: 0.30117
ELA: 1.813 Jacobi stage: ITER: 6151 RES: 0.28239
ELA: 1.9131 Jacobi stage: ITER: 6405 RES: 0.27126
ELA: 2.0141 Jacobi stage: ITER: 6691 RES: 0.25947
ELA: 2.1221 Jacobi stage: ITER: 6943 RES: 0.24948
ELA: 2.2222 Jacobi stage: ITER: 7183 RES: 0.24033
ELA: 2.3223 Jacobi stage: ITER: 7307 RES: 0.23575
ELA: 2.4224 Jacobi stage: ITER: 7431 RES: 0.23125
ELA: 2.5225 Jacobi stage: ITER: 7803 RES: 0.2183
ELA: 2.6227 Jacobi stage: ITER: 9295 RES: 0.1734
ELA: 2.7228 Jacobi stage: ITER: 10447 RES: 0.14523
ELA: 2.8241 Jacobi stage: ITER: 10895 RES: 0.13556
ELA: 2.9271 Jacobi stage: ITER: 11373 RES: 0.12592
ELA: 3.0281 Jacobi stage: ITER: 11951 RES: 0.11525
ELA: 3.1341 Jacobi stage: ITER: 12203 RES: 0.11087
ELA: 3.2351 Jacobi stage: ITER: 12723 RES: 0.10236
ELA: 3.3352 Jacobi stage: ITER: 12993 RES: 0.098171
ELA: 3.4353 Jacobi stage: ITER: 13251 RES: 0.094385
ELA: 3.5355 Jacobi stage: ITER: 13385 RES: 0.092434
ELA: 3.6356 Jacobi stage: ITER: 13623 RES: 0.089143
ELA: 3.7357 Jacobi stage: ITER: 14083 RES: 0.083061
ELA: 3.8358 Jacobi stage: ITER: 14287 RES: 0.080498
ELA: 3.936 Jacobi stage: ITER: 14403 RES: 0.079076
ELA: 4.0361 Jacobi stage: ITER: 14531 RES: 0.077537
ELA: 4.1431 Jacobi stage: ITER: 14759 RES: 0.074868
ELA: 4.2451 Jacobi stage: ITER: 15259 RES: 0.069333
ELA: 4.3452 Jacobi stage: ITER: 15447 RES: 0.06736
ELA: 4.4453 Jacobi stage: ITER: 15695 RES: 0.064842
ELA: 4.5461 Jacobi stage: ITER: 16215 RES: 0.059864
ELA: 4.6551 Jacobi stage: ITER: 18169 RES: 0.044329
ELA: 4.7552 Jacobi stage: ITER: 18423 RES: 0.042645
ELA: 4.8553 Jacobi stage: ITER: 18569 RES: 0.041687
ELA: 4.9555 Jacobi stage: ITER: 18663 RES: 0.041102
ELA: 5.0571 Jacobi stage: ITER: 18903 RES: 0.039614
ELA: 5.1572 Jacobi stage: ITER: 19171 RES: 0.038017
ELA: 5.2573 Jacobi stage: ITER: 19455 RES: 0.036394
ELA: 5.3575 Jacobi stage: ITER: 19587 RES: 0.035663
ELA: 5.4576 Jacobi stage: ITER: 20763 RES: 0.02977
ELA: 5.5651 Jacobi stage: ITER: 22899 RES: 0.021443
ELA: 5.6671 Jacobi stage: ITER: 24277 RES: 0.017347
ELA: 5.7672 Jacobi stage: ITER: 24483 RES: 0.016812
ELA: 5.8681 Jacobi stage: ITER: 24659 RES: 0.016364
ELA: 5.9682 Jacobi stage: ITER: 24839 RES: 0.015917
ELA: 6.0761 Jacobi stage: ITER: 25029 RES: 0.015455
ELA: 6.1791 Jacobi stage: ITER: 25229 RES: 0.014987
ELA: 6.2792 Jacobi stage: ITER: 25407 RES: 0.014588
ELA: 6.3861 Jacobi stage: ITER: 25513 RES: 0.014348
ELA: 6.4881 Jacobi stage: ITER: 25731 RES: 0.013879
ELA: 6.5882 Jacobi stage: ITER: 25899 RES: 0.013526
ELA: 6.6884 Jacobi stage: ITER: 26079 RES: 0.013157
ELA: 6.7885 Jacobi stage: ITER: 26319 RES: 0.012681
ELA: 6.8886 Jacobi stage: ITER: 26559 RES: 0.012222
ELA: 6.9887 Jacobi stage: ITER: 26795 RES: 0.011787
ELA: 7.0889 Jacobi stage: ITER: 27045 RES: 0.011339
ELA: 7.189 Jacobi stage: ITER: 27301 RES: 0.010902
ELA: 7.2891 Jacobi stage: ITER: 27559 RES: 0.010482
ELA: 7.3901 Jacobi stage: ITER: 27815 RES: 0.010077
ELA: 7.4902 Jacobi stage: ITER: 28069 RES: 0.0096888
ELA: 7.5904 Jacobi stage: ITER: 28323 RES: 0.0093209
ELA: 7.6905 Jacobi stage: ITER: 28577 RES: 0.0089615
ELA: 7.7906 Jacobi stage: ITER: 28815 RES: 0.0086425
ELA: 7.8907 Jacobi stage: ITER: 29007 RES: 0.0083913
ELA: 7.9908 Jacobi stage: ITER: 29255 RES: 0.0080777
ELA: 8.0909 Jacobi stage: ITER: 29477 RES: 0.0078045
ELA: 8.1911 Jacobi stage: ITER: 29727 RES: 0.0075128
ELA: 8.2931 Jacobi stage: ITER: 29949 RES: 0.0072587
ELA: 8.3932 Jacobi stage: ITER: 30199 RES: 0.0069874
ELA: 8.4933 Jacobi stage: ITER: 30455 RES: 0.006718
ELA: 8.5935 Jacobi stage: ITER: 30677 RES: 0.0064907
ELA: 8.6936 Jacobi stage: ITER: 30887 RES: 0.0062867
ELA: 8.7941 Jacobi stage: ITER: 31139 RES: 0.006048
ELA: 8.8951 Jacobi stage: ITER: 31361 RES: 0.0058434
ELA: 8.9952 Jacobi stage: ITER: 31611 RES: 0.005625
ELA: 9.0954 Jacobi stage: ITER: 31859 RES: 0.0054148
ELA: 9.1955 Jacobi stage: ITER: 32079 RES: 0.0052348
ELA: 9.2961 Jacobi stage: ITER: 32331 RES: 0.0050361
ELA: 9.3962 Jacobi stage: ITER: 32557 RES: 0.0048628
ELA: 9.4963 Jacobi stage: ITER: 32783 RES: 0.0046983
ELA: 9.5964 Jacobi stage: ITER: 33031 RES: 0.0045227
ELA: 9.6965 Jacobi stage: ITER: 33259 RES: 0.004367
ELA: 9.7967 Jacobi stage: ITER: 33505 RES: 0.0042038
ELA: 9.8968 Jacobi stage: ITER: 33759 RES: 0.0040442
ELA: 9.9969 Jacobi stage: ITER: 34015 RES: 0.0038883
ELA: 10.097 Jacobi stage: ITER: 34231 RES: 0.0037614
ELA: 10.197 Jacobi stage: ITER: 34451 RES: 0.0036364
ELA: 10.297 Jacobi stage: ITER: 34703 RES: 0.0034983
ELA: 10.398 Jacobi stage: ITER: 34961 RES: 0.0033614
ELA: 10.498 Jacobi stage: ITER: 35183 RES: 0.0032497
ELA: 10.598 Jacobi stage: ITER: 35431 RES: 0.0031282
ELA: 10.699 Jacobi stage: ITER: 35647 RES: 0.0030261
ELA: 10.799 Jacobi stage: ITER: 35899 RES: 0.0029112
ELA: 10.899 Jacobi stage: ITER: 36147 RES: 0.0028024
ELA: 10.999 Jacobi stage: ITER: 36375 RES: 0.002706
ELA: 11.1 Jacobi stage: ITER: 36563 RES: 0.002629
ELA: 11.2 Jacobi stage: ITER: 36763 RES: 0.0025494
ELA: 11.3 Jacobi stage: ITER: 37011 RES: 0.0024541
ELA: 11.4 Jacobi stage: ITER: 37231 RES: 0.0023726
ELA: 11.5 Jacobi stage: ITER: 37531 RES: 0.0022657
ELA: 11.601 Jacobi stage: ITER: 37931 RES: 0.0021307
ELA: 11.701 Jacobi stage: ITER: 38093 RES: 0.0020777
ELA: 11.801 Jacobi stage: ITER: 38271 RES: 0.0020223
ELA: 11.905 Jacobi stage: ITER: 38425 RES: 0.0019744
ELA: 12.005 Jacobi stage: ITER: 38641 RES: 0.00191
ELA: 12.107 Jacobi stage: ITER: 38837 RES: 0.0018533
ELA: 12.207 Jacobi stage: ITER: 39087 RES: 0.0017841
ELA: 12.311 Jacobi stage: ITER: 39287 RES: 0.0017301
ELA: 12.411 Jacobi stage: ITER: 39571 RES: 0.0016562
ELA: 12.511 Jacobi stage: ITER: 39825 RES: 0.0015924
ELA: 12.611 Jacobi stage: ITER: 40081 RES: 0.001531
ELA: 12.712 Jacobi stage: ITER: 40335 RES: 0.0014729
ELA: 12.812 Jacobi stage: ITER: 40557 RES: 0.001423
ELA: 12.912 Jacobi stage: ITER: 40757 RES: 0.00138
ELA: 13.012 Jacobi stage: ITER: 41011 RES: 0.0013276
ELA: 13.112 Jacobi stage: ITER: 41263 RES: 0.0012772
ELA: 13.212 Jacobi stage: ITER: 41523 RES: 0.0012272
ELA: 13.315 Jacobi stage: ITER: 41761 RES: 0.0011828
ELA: 13.415 Jacobi stage: ITER: 41975 RES: 0.0011449
ELA: 13.515 Jacobi stage: ITER: 42187 RES: 0.0011082
ELA: 13.615 Jacobi stage: ITER: 42439 RES: 0.0010661
ELA: 13.716 Jacobi stage: ITER: 42691 RES: 0.0010256
ELA: 13.816 Jacobi stage: ITER: 42955 RES: 0.00098488
ELA: 13.916 Jacobi stage: ITER: 43143 RES: 0.00095685
ELA: 14.016 Jacobi stage: ITER: 43347 RES: 0.00092733
ELA: 14.116 Jacobi stage: ITER: 43563 RES: 0.00089707
ELA: 14.217 Jacobi stage: ITER: 43807 RES: 0.00086407
ELA: 14.317 Jacobi stage: ITER: 44035 RES: 0.00083433
ELA: 14.417 Jacobi stage: ITER: 44243 RES: 0.0008081
ELA: 14.517 Jacobi stage: ITER: 44487 RES: 0.00077837
ELA: 14.617 Jacobi stage: ITER: 44743 RES: 0.00074836
ELA: 14.718 Jacobi stage: ITER: 44999 RES: 0.0007195
ELA: 14.818 Jacobi stage: ITER: 45201 RES: 0.0006973
ELA: 14.918 Jacobi stage: ITER: 45427 RES: 0.00067372
ELA: 15.018 Jacobi stage: ITER: 45663 RES: 0.00064974
ELA: 15.119 Jacobi stage: ITER: 45907 RES: 0.00062584
ELA: 15.219 Jacobi stage: ITER: 46151 RES: 0.00060281
ELA: 15.319 Jacobi stage: ITER: 46409 RES: 0.00057921
ELA: 15.419 Jacobi stage: ITER: 46667 RES: 0.00055688
ELA: 15.519 Jacobi stage: ITER: 46891 RES: 0.00053805
ELA: 15.619 Jacobi stage: ITER: 47107 RES: 0.00052049
ELA: 15.719 Jacobi stage: ITER: 47359 RES: 0.00050073
ELA: 15.819 Jacobi stage: ITER: 47579 RES: 0.00048409
ELA: 15.919 Jacobi stage: ITER: 47815 RES: 0.00046685
ELA: 16.02 Jacobi stage: ITER: 48051 RES: 0.00045023
ELA: 16.12 Jacobi stage: ITER: 48307 RES: 0.00043287
ELA: 16.22 Jacobi stage: ITER: 48511 RES: 0.00041952
ELA: 16.32 Jacobi stage: ITER: 48763 RES: 0.00040359
ELA: 16.42 Jacobi stage: ITER: 49035 RES: 0.00038708
ELA: 16.52 Jacobi stage: ITER: 49287 RES: 0.00037238
ELA: 16.62 Jacobi stage: ITER: 49539 RES: 0.00035824
ELA: 16.721 Jacobi stage: ITER: 49795 RES: 0.00034443
ELA: 16.821 Jacobi stage: ITER: 50047 RES: 0.00033135
ELA: 16.921 Jacobi stage: ITER: 50299 RES: 0.00031877
ELA: 17.021 Jacobi stage: ITER: 50551 RES: 0.00030667
ELA: 17.121 Jacobi stage: ITER: 50803 RES: 0.00029502
ELA: 17.222 Jacobi stage: ITER: 51055 RES: 0.00028382
ELA: 17.322 Jacobi stage: ITER: 51309 RES: 0.00027288
ELA: 17.422 Jacobi stage: ITER: 51561 RES: 0.00026252
ELA: 17.522 Jacobi stage: ITER: 51813 RES: 0.00025255
ELA: 17.622 Jacobi stage: ITER: 52067 RES: 0.00024296
ELA: 17.722 Jacobi stage: ITER: 52319 RES: 0.00023374
ELA: 17.822 Jacobi stage: ITER: 52571 RES: 0.00022486
ELA: 17.922 Jacobi stage: ITER: 52823 RES: 0.00021632
ELA: 18.022 Jacobi stage: ITER: 53075 RES: 0.00020811
ELA: 18.122 Jacobi stage: ITER: 53327 RES: 0.00020021
ELA: 18.223 Jacobi stage: ITER: 53579 RES: 0.00019261
ELA: 18.323 Jacobi stage: ITER: 53831 RES: 0.00018529
ELA: 18.423 Jacobi stage: ITER: 54083 RES: 0.00017826
ELA: 18.523 Jacobi stage: ITER: 54337 RES: 0.00017139
ELA: 18.623 Jacobi stage: ITER: 54589 RES: 0.00016488
ELA: 18.723 Jacobi stage: ITER: 54841 RES: 0.00015862
ELA: 18.823 Jacobi stage: ITER: 55095 RES: 0.0001526
ELA: 18.923 Jacobi stage: ITER: 55347 RES: 0.0001468
ELA: 19.023 Jacobi stage: ITER: 55599 RES: 0.00014123
ELA: 19.123 Jacobi stage: ITER: 55851 RES: 0.00013587
ELA: 19.224 Jacobi stage: ITER: 56103 RES: 0.00013071
ELA: 19.324 Jacobi stage: ITER: 56355 RES: 0.00012575
ELA: 19.424 Jacobi stage: ITER: 56607 RES: 0.00012097
ELA: 19.524 Jacobi stage: ITER: 56861 RES: 0.00011631
ELA: 19.624 Jacobi stage: ITER: 57113 RES: 0.00011189
ELA: 19.724 Jacobi stage: ITER: 57365 RES: 0.00010764
ELA: 19.824 Jacobi stage: ITER: 57619 RES: 0.00010356
ELA: 19.924 Jacobi stage: ITER: 57871 RES: 9.9623e-05
ELA: 20.024 Jacobi stage: ITER: 58123 RES: 9.5841e-05
ELA: 20.124 Jacobi stage: ITER: 58375 RES: 9.2202e-05
ELA: 20.225 Jacobi stage: ITER: 58627 RES: 8.8701e-05
ELA: 20.325 Jacobi stage: ITER: 58879 RES: 8.5333e-05
ELA: 20.425 Jacobi stage: ITER: 59133 RES: 8.2043e-05
ELA: 20.525 Jacobi stage: ITER: 59385 RES: 7.8928e-05
ELA: 20.625 Jacobi stage: ITER: 59637 RES: 7.5931e-05
ELA: 20.725 Jacobi stage: ITER: 59891 RES: 7.3048e-05
ELA: 20.825 Jacobi stage: ITER: 60143 RES: 7.0275e-05
ELA: 20.925 Jacobi stage: ITER: 60395 RES: 6.7607e-05
ELA: 21.026 Jacobi stage: ITER: 60647 RES: 6.504e-05
ELA: 21.126 Jacobi stage: ITER: 60899 RES: 6.257e-05
ELA: 21.227 Jacobi stage: ITER: 61165 RES: 6.0047e-05
ELA: 21.327 Jacobi stage: ITER: 61421 RES: 5.7732e-05
ELA: 21.498 Jacobi stage: ITER: 61851 RES: 5.4058e-05
ELA: 21.598 Jacobi stage: ITER: 62105 RES: 5.1974e-05
ELA: 21.699 Jacobi stage: ITER: 62357 RES: 5.0001e-05
ELA: 21.799 Jacobi stage: ITER: 62611 RES: 4.8102e-05
ELA: 21.899 Jacobi stage: ITER: 62863 RES: 4.6276e-05
ELA: 21.999 Jacobi stage: ITER: 63115 RES: 4.4519e-05
ELA: 22.099 Jacobi stage: ITER: 63367 RES: 4.2828e-05
ELA: 22.199 Jacobi stage: ITER: 63619 RES: 4.1202e-05
ELA: 22.299 Jacobi stage: ITER: 63871 RES: 3.9638e-05
ELA: 22.399 Jacobi stage: ITER: 64125 RES: 3.811e-05
ELA: 22.499 Jacobi stage: ITER: 64377 RES: 3.6663e-05
ELA: 22.599 Jacobi stage: ITER: 64629 RES: 3.5271e-05
ELA: 22.7 Jacobi stage: ITER: 64883 RES: 3.3931e-05
ELA: 22.8 Jacobi stage: ITER: 65135 RES: 3.2643e-05
ELA: 22.9 Jacobi stage: ITER: 65387 RES: 3.1404e-05
ELA: 23 Jacobi stage: ITER: 65639 RES: 3.0211e-05
ELA: 23.1 Jacobi stage: ITER: 65891 RES: 2.9064e-05
ELA: 23.2 Jacobi stage: ITER: 66143 RES: 2.7961e-05
ELA: 23.3 Jacobi stage: ITER: 66395 RES: 2.6899e-05
ELA: 23.4 Jacobi stage: ITER: 66649 RES: 2.5862e-05
ELA: 23.5 Jacobi stage: ITER: 66901 RES: 2.488e-05
ELA: 23.601 Jacobi stage: ITER: 67153 RES: 2.3935e-05
ELA: 23.701 Jacobi stage: ITER: 67407 RES: 2.3027e-05
ELA: 23.801 Jacobi stage: ITER: 67659 RES: 2.2152e-05
ELA: 23.901 Jacobi stage: ITER: 67911 RES: 2.1311e-05
ELA: 24.001 Jacobi stage: ITER: 68163 RES: 2.0502e-05
ELA: 24.101 Jacobi stage: ITER: 68415 RES: 1.9724e-05
ELA: 24.201 Jacobi stage: ITER: 68669 RES: 1.8963e-05
ELA: 24.301 Jacobi stage: ITER: 68921 RES: 1.8243e-05
ELA: 24.401 Jacobi stage: ITER: 69173 RES: 1.7551e-05
ELA: 24.502 Jacobi stage: ITER: 69427 RES: 1.6884e-05
ELA: 24.602 Jacobi stage: ITER: 69679 RES: 1.6243e-05
ELA: 24.702 Jacobi stage: ITER: 69931 RES: 1.5626e-05
ELA: 24.802 Jacobi stage: ITER: 70183 RES: 1.5033e-05
ELA: 24.902 Jacobi stage: ITER: 70435 RES: 1.4462e-05
ELA: 25.002 Jacobi stage: ITER: 70687 RES: 1.3913e-05
ELA: 25.102 Jacobi stage: ITER: 70941 RES: 1.3377e-05
ELA: 25.202 Jacobi stage: ITER: 71193 RES: 1.2869e-05
ELA: 25.302 Jacobi stage: ITER: 71445 RES: 1.238e-05
ELA: 25.403 Jacobi stage: ITER: 71699 RES: 1.191e-05
ELA: 25.503 Jacobi stage: ITER: 71951 RES: 1.1458e-05
ELA: 25.603 Jacobi stage: ITER: 72203 RES: 1.1023e-05
ELA: 25.703 Jacobi stage: ITER: 72455 RES: 1.0604e-05
ELA: 25.803 Jacobi stage: ITER: 72707 RES: 1.0202e-05
ELA: 25.903 Jacobi stage: ITER: 72959 RES: 9.8144e-06
ELA: 26.003 Jacobi stage: ITER: 73213 RES: 9.436e-06
ELA: 26.103 Jacobi stage: ITER: 73465 RES: 9.0777e-06
ELA: 26.204 Jacobi stage: ITER: 73717 RES: 8.7331e-06
ELA: 26.304 Jacobi stage: ITER: 73971 RES: 8.4015e-06
ELA: 26.404 Jacobi stage: ITER: 74225 RES: 8.0776e-06
ELA: 26.504 Jacobi stage: ITER: 74477 RES: 7.7709e-06
ELA: 26.604 Jacobi stage: ITER: 74729 RES: 7.4758e-06
ELA: 26.704 Jacobi stage: ITER: 74983 RES: 7.192e-06
ELA: 26.804 Jacobi stage: ITER: 75235 RES: 6.9189e-06
ELA: 26.904 Jacobi stage: ITER: 75487 RES: 6.6562e-06
ELA: 27.004 Jacobi stage: ITER: 75739 RES: 6.4035e-06
ELA: 27.105 Jacobi stage: ITER: 75991 RES: 6.1604e-06
ELA: 27.205 Jacobi stage: ITER: 76243 RES: 5.9265e-06
ELA: 27.305 Jacobi stage: ITER: 76497 RES: 5.6979e-06
ELA: 27.405 Jacobi stage: ITER: 76749 RES: 5.4816e-06
ELA: 27.505 Jacobi stage: ITER: 77001 RES: 5.2735e-06
ELA: 27.605 Jacobi stage: ITER: 77255 RES: 5.0733e-06
ELA: 27.705 Jacobi stage: ITER: 77507 RES: 4.8806e-06
ELA: 27.805 Jacobi stage: ITER: 77759 RES: 4.6953e-06
ELA: 27.905 Jacobi stage: ITER: 78011 RES: 4.5171e-06
ELA: 28.006 Jacobi stage: ITER: 78263 RES: 4.3456e-06
ELA: 28.106 Jacobi stage: ITER: 78515 RES: 4.1806e-06
ELA: 28.206 Jacobi stage: ITER: 78769 RES: 4.0194e-06
ELA: 28.306 Jacobi stage: ITER: 79021 RES: 3.8668e-06
ELA: 28.406 Jacobi stage: ITER: 79273 RES: 3.7199e-06
ELA: 28.506 Jacobi stage: ITER: 79527 RES: 3.5787e-06
ELA: 28.606 Jacobi stage: ITER: 79779 RES: 3.4428e-06
ELA: 28.706 Jacobi stage: ITER: 80031 RES: 3.3121e-06
ELA: 28.806 Jacobi stage: ITER: 80283 RES: 3.1864e-06
ELA: 28.907 Jacobi stage: ITER: 80535 RES: 3.0654e-06
ELA: 29.007 Jacobi stage: ITER: 80787 RES: 2.949e-06
ELA: 29.107 Jacobi stage: ITER: 81039 RES: 2.837e-06
ELA: 29.207 Jacobi stage: ITER: 81291 RES: 2.7293e-06
ELA: 29.307 Jacobi stage: ITER: 81545 RES: 2.6241e-06
ELA: 29.407 Jacobi stage: ITER: 81797 RES: 2.5244e-06
ELA: 29.507 Jacobi stage: ITER: 82049 RES: 2.4286e-06
ELA: 29.607 Jacobi stage: ITER: 82303 RES: 2.3364e-06
ELA: 29.707 Jacobi stage: ITER: 82555 RES: 2.2477e-06
ELA: 29.808 Jacobi stage: ITER: 82807 RES: 2.1623e-06
ELA: 29.908 Jacobi stage: ITER: 83059 RES: 2.0802e-06
ELA: 30.008 Jacobi stage: ITER: 83311 RES: 2.0012e-06
ELA: 30.108 Jacobi stage: ITER: 83563 RES: 1.9253e-06
ELA: 30.208 Jacobi stage: ITER: 83815 RES: 1.8522e-06
ELA: 30.308 Jacobi stage: ITER: 84069 RES: 1.7807e-06
ELA: 30.408 Jacobi stage: ITER: 84321 RES: 1.7131e-06
ELA: 30.508 Jacobi stage: ITER: 84573 RES: 1.6481e-06
ELA: 30.608 Jacobi stage: ITER: 84825 RES: 1.5855e-06
ELA: 30.709 Jacobi stage: ITER: 85079 RES: 1.5253e-06
ELA: 30.809 Jacobi stage: ITER: 85331 RES: 1.4674e-06
ELA: 30.909 Jacobi stage: ITER: 85583 RES: 1.4117e-06
ELA: 31.009 Jacobi stage: ITER: 85835 RES: 1.3581e-06
ELA: 31.109 Jacobi stage: ITER: 86087 RES: 1.3065e-06
ELA: 31.209 Jacobi stage: ITER: 86339 RES: 1.2569e-06
ELA: 31.309 Jacobi stage: ITER: 86593 RES: 1.2085e-06
ELA: 31.409 Jacobi stage: ITER: 86845 RES: 1.1626e-06
ELA: 31.509 Jacobi stage: ITER: 87097 RES: 1.1184e-06
ELA: 31.61 Jacobi stage: ITER: 87351 RES: 1.076e-06
ELA: 31.71 Jacobi stage: ITER: 87603 RES: 1.0351e-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: