Skip to content

Commit 10c421a

Browse files
committed
Removed wrappers, added some comments.
1 parent 83e4bbf commit 10c421a

File tree

11 files changed

+213
-196
lines changed

11 files changed

+213
-196
lines changed

apps/full_matrix_01.cc

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
#include "wrappers.h"
21
#include "test.h"
3-
42
#include <iostream>
53

64
using namespace dealii;

apps/full_matrix_02.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "wrappers.h"
21
#include "test.h"
32

43
#include <iostream>

apps/full_matrix_03.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "wrappers.h"
21
#include "test.h"
32

43
#include <iostream>

apps/full_matrix_04.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "wrappers.h"
21
#include "test.h"
32

43
#include <iostream>

apps/sparse_matrix_01.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "wrappers.h"
21
#include "test.h"
32

43
#include <iostream>

apps/sparse_matrix_02.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "wrappers.h"
21
#include "test.h"
32

43
#include <iostream>

apps/sparse_matrix_03.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "wrappers.h"
21
#include "test.h"
32

43
#include <iostream>

apps/sparse_matrix_04.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "wrappers.h"
21
#include "test.h"
32

43
#include <iostream>

apps/step-32.cc

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3058,11 +3058,15 @@ namespace Step32
30583058
SolverCG<TrilinosWrappers::MPI::Vector> solver_CG(solver_control_pre);
30593059

30603060
TimerOutput timer(pcout, TimerOutput::summary, TimerOutput::wall_times);
3061+
3062+
// Before we solve the system, we assess the overhead introduced by the LinearOperator
3063+
// Check how much it should cost to multiply 100 times with the preconditioner
30613064
timer.enter_subsection ("raw");
30623065
for (unsigned int i=0; i< 100; ++i)
30633066
preconditioner.vmult(distributed_stokes_solution, stokes_rhs);
30643067
timer.leave_subsection();
30653068

3069+
// Now check with an optimized version of the same preconditioner
30663070
timer.enter_subsection ("raw opt");
30673071
for (unsigned int i=0; i< 100; ++i)
30683072
preconditioner_opt.vmult(distributed_stokes_solution, stokes_rhs);
@@ -3076,12 +3080,9 @@ namespace Step32
30763080
auto ZeroP = linear_operator< TrilinosWrappers::MPI::Vector >( stokes_matrix.block(1,1) );
30773081

30783082
auto Mp = linear_operator< TrilinosWrappers::MPI::Vector >( stokes_preconditioner_matrix.block(1,1) );
3079-
// auto Amg = linear_operator< TrilinosWrappers::MPI::Vector >( stokes_preconditioner_matrix.block(0,0) );
3080-
3081-
30823083

30833084
auto Schur_inv = inverse_operator( Mp, solver_CG, *Mp_preconditioner);
3084-
// auto A_inv = inverse_operator( A, solver_CG, *Amg_preconditioner);
3085+
30853086
auto Amg = linear_operator< TrilinosWrappers::MPI::Vector >( stokes_preconditioner_matrix.block(0,0),*Amg_preconditioner );
30863087
auto P00 = Amg;
30873088
auto P01 = Amg * Bt * Schur_inv;
@@ -3096,46 +3097,46 @@ namespace Step32
30963097
}
30973098
} );
30983099

3099-
const auto DiagInv = block_diagonal_operator<2, TrilinosWrappers::MPI::BlockVector >({ Amg, -1*Schur_inv });
3100+
const auto DiagInv = block_diagonal_operator<2, TrilinosWrappers::MPI::BlockVector >({{ Amg, -1*Schur_inv }});
31003101

31013102
const auto P_inv = block_back_substitution<TrilinosWrappers::MPI::BlockVector>(Mat, DiagInv);
31023103

3104+
// And here check the LinearOperator version
31033105
timer.enter_subsection ("LO");
31043106
for (unsigned int i=0; i< 100; ++i)
31053107
P_inv.vmult(distributed_stokes_solution, stokes_rhs);
31063108
timer.leave_subsection();
3107-
// exit(0);
3108-
//
3109-
// SolverFGMRES<TrilinosWrappers::MPI::BlockVector>
3110-
// solver(solver_control, mem,
3111-
// SolverFGMRES<TrilinosWrappers::MPI::BlockVector>::
3112-
// AdditionalData(30, true));
3113-
// solver.solve(stokes_matrix, distributed_stokes_solution, stokes_rhs,
3114-
// preconditioner);
3115-
//
3116-
// n_iterations = solver_control.last_step();
3117-
// }
3118-
3119-
// catch (SolverControl::NoConvergence)
3120-
// {
3121-
// const LinearSolvers::BlockSchurPreconditioner<TrilinosWrappers::PreconditionAMG,
3122-
// TrilinosWrappers::PreconditionJacobi>
3123-
// preconditioner (stokes_matrix, stokes_preconditioner_matrix,
3124-
// *Mp_preconditioner, *Amg_preconditioner,
3125-
// true);
3126-
//
3127-
// SolverControl solver_control_refined (stokes_matrix.m(), solver_tolerance);
3128-
// SolverFGMRES<TrilinosWrappers::MPI::BlockVector>
3129-
// solver(solver_control_refined, mem,
3130-
// SolverFGMRES<TrilinosWrappers::MPI::BlockVector>::
3131-
// AdditionalData(50, true));
3132-
// solver.solve(stokes_matrix, distributed_stokes_solution, stokes_rhs,
3133-
// preconditioner);
3134-
//
3135-
// n_iterations = (solver_control.last_step() +
3136-
// solver_control_refined.last_step());
3137-
// }
31383109

3110+
try
3111+
{
3112+
SolverFGMRES<TrilinosWrappers::MPI::BlockVector>
3113+
solver(solver_control, mem,
3114+
SolverFGMRES<TrilinosWrappers::MPI::BlockVector>::
3115+
AdditionalData(30, true));
3116+
solver.solve(stokes_matrix, distributed_stokes_solution, stokes_rhs,
3117+
P_inv);
3118+
3119+
n_iterations = solver_control.last_step();
3120+
}
3121+
catch (SolverControl::NoConvergence)
3122+
{
3123+
const LinearSolvers::BlockSchurPreconditioner<TrilinosWrappers::PreconditionAMG,
3124+
TrilinosWrappers::PreconditionJacobi>
3125+
preconditioner (stokes_matrix, stokes_preconditioner_matrix,
3126+
*Mp_preconditioner, *Amg_preconditioner,
3127+
true);
3128+
3129+
SolverControl solver_control_refined (stokes_matrix.m(), solver_tolerance);
3130+
SolverFGMRES<TrilinosWrappers::MPI::BlockVector>
3131+
solver(solver_control_refined, mem,
3132+
SolverFGMRES<TrilinosWrappers::MPI::BlockVector>::
3133+
AdditionalData(50, true));
3134+
solver.solve(stokes_matrix, distributed_stokes_solution, stokes_rhs,
3135+
P_inv);
3136+
3137+
n_iterations = (solver_control.last_step() +
3138+
solver_control_refined.last_step());
3139+
}
31393140

31403141
stokes_constraints.distribute (distributed_stokes_solution);
31413142

0 commit comments

Comments
 (0)