/usr/include/gmsh/linearSystemMUMPS.h is in libgmsh-dev 3.0.6+dfsg1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | // Gmsh - Copyright (C) 1997-2017 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#ifndef _LINEAR_SYSTEM_MUMPS_H_
#define _LINEAR_SYSTEM_MUMPS_H_
// Interface to a linear system with MUMPS
#include "GmshConfig.h"
#include "GmshMessage.h"
#include "linearSystem.h"
#if defined(HAVE_MUMPS)
#include "dmumps_c.h"
#include "zmumps_c.h"
template <class scalar>
class linearSystemMUMPS : public linearSystem<scalar> {
public:
linearSystemMUMPS()
{
Msg::Info("linearSystemMUMPS not implemented for this element type");
}
virtual bool isAllocated() const {return false;}
virtual void allocate(int nbRows) {}
virtual void clear() {}
virtual void zeroMatrix() {}
virtual void zeroRightHandSide() {}
virtual void zeroSolution() {}
virtual int systemSolve() {return 1;}
virtual void insertInSparsityPattern(int row, int col) {}
virtual double normInfRightHandSide() const {return 0.;}
virtual double normInfSolution() const {return 0.;}
virtual void addToMatrix(int row, int col, const double &val) {}
virtual void getFromMatrix(int row, int col, double &val) const {}
virtual void addToRightHandSide(int row, const scalar &val, int ith = 0) {}
virtual void getFromRightHandSide(int row, scalar &val) const {}
virtual void getFromSolution(int row, scalar &val) const {}
virtual void addToSolution(int row, const scalar &val) {}
};
template <>
class linearSystemMUMPS<double> : public linearSystem<double> {
private:
int _n;
int _nz;
std::vector<int> _irn;
std::vector<int> _jcn;
std::vector<DMUMPS_REAL> _x;
std::vector<DMUMPS_REAL> _b;
std::vector<DMUMPS_REAL> _a;
// _ij[i][j] is the index of _a that is the (i, j) element of
// the system matrix
std::vector<std::map<int,int> > _ij;
public:
linearSystemMUMPS();
virtual bool isAllocated() const;
virtual void allocate(int nbRows);
virtual void clear();
virtual void zeroMatrix();
virtual void zeroRightHandSide();
virtual void zeroSolution();
virtual int systemSolve();
virtual void insertInSparsityPattern(int row, int col);
virtual double normInfRightHandSide() const;
virtual double normInfSolution() const;
virtual void addToMatrix(int row, int col, const double &val);
virtual void getFromMatrix(int row, int col, double &val) const;
virtual void addToRightHandSide(int row, const double &val, int ith = 0);
virtual void getFromRightHandSide(int row, double &val) const;
virtual void getFromSolution(int row, double &val) const;
virtual void addToSolution(int row, const double &val);
};
#endif
#endif
|