26 #ifndef CASADI_MUMPS_INTERFACE_HPP
27 #define CASADI_MUMPS_INTERFACE_HPP
29 #include "casadi/core/linsol_internal.hpp"
30 #include <casadi/interfaces/mumps/casadi_linsol_mumps_export.h>
33 #ifdef COIN_USE_MUMPS_MPI_H
34 #include <mumps_mpi.h>
36 #include <mumps_seq/mpi.h>
52 struct MumpsMemory :
public LinsolMemory {
63 std::vector<int> irn, jcn;
66 std::vector<double> nz;
73 class MumpsInterface :
public LinsolInternal {
77 MumpsInterface(
const std::string& name,
const Sparsity& sp);
80 static LinsolInternal* creator(
const std::string& name,
const Sparsity& sp) {
81 return new MumpsInterface(name, sp);
85 ~MumpsInterface()
override;
89 static const Options options_;
90 const Options& get_options()
const override {
return options_;}
94 void init(
const Dict& opts)
override;
97 void* alloc_mem()
const override {
return new MumpsMemory();}
100 int init_mem(
void* mem)
const override;
103 void free_mem(
void *mem)
const override {
delete static_cast<MumpsMemory*
>(mem);}
106 int nfact(
void* mem,
const double* A)
const override;
109 int solve(
void* mem,
const double* A,
double* x, casadi_int nrhs,
bool tr)
const override;
112 static const std::string meta_doc;
115 const char* plugin_name()
const override {
return "mumps";}
118 std::string class_name()
const override {
return "MumpsInterface";}
121 void serialize_body(SerializingStream &s)
const override;
124 static ProtoFunction* deserialize(DeserializingStream& s) {
return new MumpsInterface(s); }
128 bool symmetric_, posdef_;
133 explicit MumpsInterface(DeserializingStream& s);
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.