You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
4.9 KiB
160 lines
4.9 KiB
5 years ago
|
/*
|
||
|
*
|
||
|
* This file is part of MUMPS 4.10.0, built on Tue May 10 12:56:32 UTC 2011
|
||
|
*
|
||
|
*
|
||
|
* This version of MUMPS is provided to you free of charge. It is public
|
||
|
* domain, based on public domain software developed during the Esprit IV
|
||
|
* European project PARASOL (1996-1999). Since this first public domain
|
||
|
* version in 1999, research and developments have been supported by the
|
||
|
* following institutions: CERFACS, CNRS, ENS Lyon, INPT(ENSEEIHT)-IRIT,
|
||
|
* INRIA, and University of Bordeaux.
|
||
|
*
|
||
|
* The MUMPS team at the moment of releasing this version includes
|
||
|
* Patrick Amestoy, Maurice Bremond, Alfredo Buttari, Abdou Guermouche,
|
||
|
* Guillaume Joslin, Jean-Yves L'Excellent, Francois-Henry Rouet, Bora
|
||
|
* Ucar and Clement Weisbecker.
|
||
|
*
|
||
|
* We are also grateful to Emmanuel Agullo, Caroline Bousquet, Indranil
|
||
|
* Chowdhury, Philippe Combes, Christophe Daniel, Iain Duff, Vincent Espirat,
|
||
|
* Aurelia Fevre, Jacko Koster, Stephane Pralet, Chiara Puglisi, Gregoire
|
||
|
* Richard, Tzvetomila Slavova, Miroslav Tuma and Christophe Voemel who
|
||
|
* have been contributing to this project.
|
||
|
*
|
||
|
* Up-to-date copies of the MUMPS package can be obtained
|
||
|
* from the Web pages:
|
||
|
* http://mumps.enseeiht.fr/ or http://graal.ens-lyon.fr/MUMPS
|
||
|
*
|
||
|
*
|
||
|
* THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
|
||
|
* EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
|
||
|
*
|
||
|
*
|
||
|
* User documentation of any code that uses this software can
|
||
|
* include this complete notice. You can acknowledge (using
|
||
|
* references [1] and [2]) the contribution of this package
|
||
|
* in any scientific publication dependent upon the use of the
|
||
|
* package. You shall use reasonable endeavours to notify
|
||
|
* the authors of the package of this publication.
|
||
|
*
|
||
|
* [1] P. R. Amestoy, I. S. Duff, J. Koster and J.-Y. L'Excellent,
|
||
|
* A fully asynchronous multifrontal solver using distributed dynamic
|
||
|
* scheduling, SIAM Journal of Matrix Analysis and Applications,
|
||
|
* Vol 23, No 1, pp 15-41 (2001).
|
||
|
*
|
||
|
* [2] P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and
|
||
|
* S. Pralet, Hybrid scheduling for the parallel solution of linear
|
||
|
* systems. Parallel Computing Vol 32 (2), pp 136-156 (2006).
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/* Mostly written in march 2002 (JYL) */
|
||
|
|
||
|
#ifndef DMUMPS_C_H
|
||
|
#define DMUMPS_C_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "mumps_compat.h"
|
||
|
/* Next line defines MUMPS_INT, DMUMPS_COMPLEX and DMUMPS_REAL */
|
||
|
#include "mumps_c_types.h"
|
||
|
|
||
|
#ifndef MUMPS_VERSION
|
||
|
/* Protected in case headers of other arithmetics are included */
|
||
|
#define MUMPS_VERSION "4.10.0"
|
||
|
#endif
|
||
|
#ifndef MUMPS_VERSION_MAX_LEN
|
||
|
#define MUMPS_VERSION_MAX_LEN 14
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Definition of the (simplified) MUMPS C structure.
|
||
|
* NB: DMUMPS_COMPLEX are REAL types in s and d arithmetics.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
|
||
|
MUMPS_INT sym, par, job;
|
||
|
MUMPS_INT comm_fortran; /* Fortran communicator */
|
||
|
MUMPS_INT icntl[40];
|
||
|
DMUMPS_REAL cntl[15];
|
||
|
MUMPS_INT n;
|
||
|
|
||
|
MUMPS_INT nz_alloc; /* used in matlab interface to decide if we
|
||
|
free + malloc when we have large variation */
|
||
|
|
||
|
/* Assembled entry */
|
||
|
MUMPS_INT nz;
|
||
|
MUMPS_INT *irn;
|
||
|
MUMPS_INT *jcn;
|
||
|
DMUMPS_COMPLEX *a;
|
||
|
|
||
|
/* Distributed entry */
|
||
|
MUMPS_INT nz_loc;
|
||
|
MUMPS_INT *irn_loc;
|
||
|
MUMPS_INT *jcn_loc;
|
||
|
DMUMPS_COMPLEX *a_loc;
|
||
|
|
||
|
/* Element entry */
|
||
|
MUMPS_INT nelt;
|
||
|
MUMPS_INT *eltptr;
|
||
|
MUMPS_INT *eltvar;
|
||
|
DMUMPS_COMPLEX *a_elt;
|
||
|
|
||
|
/* Ordering, if given by user */
|
||
|
MUMPS_INT *perm_in;
|
||
|
|
||
|
/* Orderings returned to user */
|
||
|
MUMPS_INT *sym_perm; /* symmetric permutation */
|
||
|
MUMPS_INT *uns_perm; /* column permutation */
|
||
|
|
||
|
/* Scaling (input only in this version) */
|
||
|
DMUMPS_REAL *colsca;
|
||
|
DMUMPS_REAL *rowsca;
|
||
|
|
||
|
/* RHS, solution, ouptput data and statistics */
|
||
|
DMUMPS_COMPLEX *rhs, *redrhs, *rhs_sparse, *sol_loc;
|
||
|
MUMPS_INT *irhs_sparse, *irhs_ptr, *isol_loc;
|
||
|
MUMPS_INT nrhs, lrhs, lredrhs, nz_rhs, lsol_loc;
|
||
|
MUMPS_INT schur_mloc, schur_nloc, schur_lld;
|
||
|
MUMPS_INT mblock, nblock, nprow, npcol;
|
||
|
MUMPS_INT info[40],infog[40];
|
||
|
DMUMPS_REAL rinfo[40], rinfog[40];
|
||
|
|
||
|
/* Null space */
|
||
|
MUMPS_INT deficiency;
|
||
|
MUMPS_INT *pivnul_list;
|
||
|
MUMPS_INT *mapping;
|
||
|
|
||
|
/* Schur */
|
||
|
MUMPS_INT size_schur;
|
||
|
MUMPS_INT *listvar_schur;
|
||
|
DMUMPS_COMPLEX *schur;
|
||
|
|
||
|
/* Internal parameters */
|
||
|
MUMPS_INT instance_number;
|
||
|
DMUMPS_COMPLEX *wk_user;
|
||
|
|
||
|
/* Version number: length=14 in FORTRAN + 1 for final \0 + 1 for alignment */
|
||
|
char version_number[MUMPS_VERSION_MAX_LEN + 1 + 1];
|
||
|
/* For out-of-core */
|
||
|
char ooc_tmpdir[256];
|
||
|
char ooc_prefix[64];
|
||
|
/* To save the matrix in matrix market format */
|
||
|
char write_problem[256];
|
||
|
MUMPS_INT lwk_user;
|
||
|
|
||
|
} DMUMPS_STRUC_C;
|
||
|
|
||
|
|
||
|
void MUMPS_CALL
|
||
|
dmumps_c( DMUMPS_STRUC_C * dmumps_par );
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* DMUMPS_C_H */
|
||
|
|