30 #ifndef NEW_MUMPS_SOLVER_HEADER
31 #define NEW_MUMPS_SOLVER_HEADER
36 #include <oomph-lib-config.h>
46 #include <mumps_c_types.h>
52 #define ICNTL(i) icntl[(i)-1]
53 #define INFOG(i) infog[(i)-1]
54 #define INFO(i) info[(i)-1]
359 oomph_info <<
"Setting up Mumps (exact) preconditioner" << std::endl;
363 if (dist_matrix_pt != 0)
371 std::ostringstream error_message_stream;
373 <<
"NewMumpsPreconditioner can only be applied to matrices derived \n"
374 <<
"DistributableLinearAlgebraObject.\n";
Definition: linear_algebra_distribution.h:435
LinearAlgebraDistribution * distribution_pt() const
access to the LinearAlgebraDistribution
Definition: linear_algebra_distribution.h:457
void build_distribution(const LinearAlgebraDistribution *const dist_pt)
Definition: linear_algebra_distribution.h:507
Definition: matrices.h:261
Definition: double_vector.h:58
Definition: linear_algebra_distribution.h:64
Definition: linear_solver.h:68
void disable_doc_time()
Disable documentation of solve times.
Definition: linear_solver.h:116
void enable_doc_time()
Enable documentation of solve times.
Definition: linear_solver.h:110
virtual void disable_resolve()
Definition: linear_solver.h:144
Wrapper to Mumps solver.
Definition: mumps_solver.h:62
double Jacobian_setup_time
Jacobian setup time.
Definition: mumps_solver.h:255
DMUMPS_STRUC_C * Mumps_struc_pt
Pointer to MUMPS struct that contains the solver data.
Definition: mumps_solver.h:297
void enable_suppress_warning_about_MPI_COMM_WORLD()
Definition: mumps_solver.h:89
~MumpsSolver()
Destructor: Cleanup.
Definition: mumps_solver.cc:168
void enable_doc_stats()
Enable documentation of statistics.
Definition: mumps_solver.h:133
void use_metis_ordering()
Definition: mumps_solver.h:236
unsigned Jacobian_ordering_flag
Definition: mumps_solver.h:325
void disable_suppress_solve()
Definition: mumps_solver.h:168
void use_scotch_ordering()
Definition: mumps_solver.h:242
bool Mumps_is_initialised
Has mumps been initialised?
Definition: mumps_solver.h:274
bool Suppress_warning_about_MPI_COMM_WORLD
Definition: mumps_solver.h:268
void disable_delete_matrix_data()
Definition: mumps_solver.h:190
virtual double linear_solver_solution_time()
Definition: mumps_solver.h:153
void use_pord_ordering()
Definition: mumps_solver.h:230
Vector< int > Jcn_loc
Definition: mumps_solver.h:291
Vector< double > A_loc
Definition: mumps_solver.h:294
void shutdown_mumps()
Shutdown mumps.
Definition: mumps_solver.cc:141
MumpsJacobianOrderingFlags
Definition: mumps_solver.h:312
@ Pord_ordering
Definition: mumps_solver.h:314
@ Metis_ordering
Definition: mumps_solver.h:315
@ Scotch_ordering
Definition: mumps_solver.h:313
double Solution_time
Solution time.
Definition: mumps_solver.h:258
void declare_jacobian_is_symmetric()
Tell MUMPS that the Jacobian matrix is general symmetric.
Definition: mumps_solver.h:218
unsigned Workspace_scaling_factor
Definition: mumps_solver.h:277
void resolve(const DoubleVector &rhs, DoubleVector &result)
Definition: mumps_solver.cc:1005
bool Suppress_solve
Suppress solve?
Definition: mumps_solver.h:261
MumpsSolver(const MumpsSolver &dummy)=delete
Broken copy constructor.
bool Delete_matrix_data
Definition: mumps_solver.h:285
void operator=(const MumpsSolver &)=delete
Broken assignment operator.
bool Doc_stats
Set to true for MumpsSolver to output statistics (false by default).
Definition: mumps_solver.h:264
void disable_doc_stats()
Disable documentation of statistics.
Definition: mumps_solver.h:139
void backsub(const DoubleVector &rhs, DoubleVector &result)
Definition: mumps_solver.cc:526
Vector< int > Irn_loc
Vector for row numbers.
Definition: mumps_solver.h:288
void enable_suppress_mumps_info_during_solve()
Definition: mumps_solver.h:102
static bool Suppress_incorrect_rhs_distribution_warning_in_resolve
Definition: mumps_solver.h:66
void enable_suppress_solve()
Definition: mumps_solver.h:161
unsigned Jacobian_symmetry_flag
Definition: mumps_solver.h:320
void disable_resolve()
Overload disable resolve so that it cleans up memory too.
Definition: mumps_solver.h:81
MumpsSolver()
Constructor: Call setup.
Definition: mumps_solver.cc:69
bool Suppress_mumps_info_during_solve
Boolean to suppress info being printed to screen during MUMPS solve.
Definition: mumps_solver.h:271
static int Default_workspace_scaling_factor
Definition: mumps_solver.h:209
void disable_suppress_mumps_info_during_solve()
Don't suppress info being printed to screen during MUMPS solve.
Definition: mumps_solver.h:108
void clean_up_memory()
Clean up the memory allocated by the mumps solver.
Definition: mumps_solver.cc:710
void disable_suppress_warning_about_MPI_COMM_WORLD()
Don't suppress warning about communicator not equal to MPI_COMM_WORLD.
Definition: mumps_solver.h:95
void solve(Problem *const &problem_pt, DoubleVector &result)
Definition: mumps_solver.cc:894
void initialise_mumps()
Initialise instance of mumps data structure.
Definition: mumps_solver.cc:86
double jacobian_setup_time()
Definition: mumps_solver.h:146
void factorise(DoubleMatrixBase *const &matrix_pt)
Definition: mumps_solver.cc:180
void declare_jacobian_is_symmetric_positive_definite()
Tell MUMPS that the Jacobian matrix is symmetric positive-definite.
Definition: mumps_solver.h:224
MumpsJacobianSymmetryFlags
Definition: mumps_solver.h:303
@ Unsymmetric
Definition: mumps_solver.h:304
@ Symmetric_positive_definite
Definition: mumps_solver.h:305
@ Symmetric
Definition: mumps_solver.h:306
void declare_jacobian_is_unsymmetric()
Tell MUMPS that the Jacobian matrix is unsymmetric.
Definition: mumps_solver.h:212
void enable_delete_matrix_data()
Definition: mumps_solver.h:179
An interface to allow Mumps to be used as an (exact) Preconditioner.
Definition: mumps_solver.h:338
void operator=(const NewMumpsPreconditioner &)=delete
Broken assignment operator.
void enable_doc_time()
Enable documentation of timings.
Definition: mumps_solver.h:398
void setup()
Definition: mumps_solver.h:357
void clean_up_memory()
Definition: mumps_solver.h:391
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Definition: mumps_solver.h:383
void disable_doc_time()
Disable the documentation of timings.
Definition: mumps_solver.h:404
NewMumpsPreconditioner(const NewMumpsPreconditioner &)=delete
Broken copy constructor.
MumpsSolver Solver
the Mumps solver emplyed by this preconditioner
Definition: mumps_solver.h:411
NewMumpsPreconditioner()
Constructor.
Definition: mumps_solver.h:341
~NewMumpsPreconditioner()
Destructor.
Definition: mumps_solver.h:344
Definition: oomph_definitions.h:222
Definition: preconditioner.h:54
virtual DoubleMatrixBase * matrix_pt() const
Get function for matrix pointer.
Definition: preconditioner.h:150
Definition: problem.h:151
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86