27 #include "mumps_interface.hpp"
28 #include "casadi/core/global_options.hpp"
33 int CASADI_LINSOL_MUMPS_EXPORT
36 plugin->name =
"mumps";
38 plugin->version = CASADI_VERSION;
77 for (
auto&& op : opts) {
78 if (op.first==
"symmetric") {
80 }
else if (op.first==
"posdef") {
100 m->id =
new DMUMPS_STRUC_C();
106 m->id->comm_fortran = -987654;
110 casadi_int n = this->
nrow();
118 const casadi_int*
row = this->
row();
119 for (casadi_int c = 0; c < n; ++c) {
120 for (casadi_int k =
colind[c]; k <
colind[c + 1]; ++k) {
122 m->irn.push_back(
row[k] + 1);
123 m->jcn.push_back(c + 1);
133 casadi_assert_dev(A!=
nullptr);
136 auto nz_it = m->nz.begin();
139 casadi_int n = this->
nrow();
141 const casadi_int*
row = this->
row();
142 for (casadi_int c = 0; c < n; ++c) {
143 for (casadi_int k =
colind[c]; k <
colind[c + 1]; ++k) {
144 if (
row[k] <= c) *nz_it++ = A[k];
149 std::copy(A, A + this->
nnz(), nz_it);
153 m->id->n = this->
nrow();
154 m->id->nnz = m->nz.size();
160 m->id->icntl[1 - 1] = -1;
161 m->id->icntl[2 - 1] = -1;
162 m->id->icntl[3 - 1] = -1;
163 m->id->icntl[4 - 1] = 0;
176 m->
id->icntl[9 - 1] = tr ? 0 : 1;
181 for (casadi_int i=0;i<nrhs;++i) {
Helper class for Serialization.
void unpack(Sparsity &e)
Reconstruct an object from the input stream.
void version(const std::string &name, int v)
const casadi_int * colind() const
void init(const Dict &opts) override
Initialize.
const casadi_int * row() const
void serialize_body(SerializingStream &s) const override
Serialize an object without type information.
casadi_int nrow() const
Get sparsity pattern.
int init_mem(void *mem) const override
Initalize memory block.
void serialize_body(SerializingStream &s) const override
Serialize an object without type information.
int init_mem(void *mem) const override
Initalize memory block.
~MumpsInterface() override
static const Options options_
Options.
int nfact(void *mem, const double *A) const override
Numeric factorization.
static LinsolInternal * creator(const std::string &name, const Sparsity &sp)
Create a new Linsol.
int solve(void *mem, const double *A, double *x, casadi_int nrhs, bool tr) const override
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize with type disambiguation.
static const std::string meta_doc
A documentation string.
MumpsInterface(const std::string &name, const Sparsity &sp)
void init(const Dict &opts) override
Initialize.
static void registerPlugin(const Plugin &plugin, bool needs_lock=true)
Register an integrator in the factory.
static const Options options_
Options.
void clear_mem()
Clear all memory (called from destructor)
Helper class for Serialization.
void version(const std::string &name, int v)
void pack(const Sparsity &e)
Serializes an object to the output stream.
casadi_int nnz_upper(bool strictly=false) const
Number of non-zeros in the upper triangular half,.
void CASADI_LINSOL_MUMPS_EXPORT casadi_load_linsol_mumps()
int CASADI_LINSOL_MUMPS_EXPORT casadi_register_linsol_mumps(LinsolInternal::Plugin *plugin)
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
T * get_ptr(std::vector< T > &v)
Get a pointer to the data contained in the vector.
Options metadata for a class.